{"_id":"@energyweb/origin-backend-irec-app","_rev":"189-2e034c30f2ab61c45d1394ddfcceab69","name":"@energyweb/origin-backend-irec-app","dist-tags":{"canary":"1.5.2-alpha.1658756736.0","latest":"2.0.1"},"versions":{"1.0.2-alpha.13398.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.13398.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.13398.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.13398.0","@energyweb/exchange-irec":"1.0.2-alpha.13398.0","@energyweb/issuer-api":"0.1.4-alpha.13398.0","@energyweb/migrations":"3.2.4-alpha.13398.0","@energyweb/origin-backend":"10.0.1-alpha.13398.0","@energyweb/origin-backend-core":"8.0.1-alpha.13398.0","@energyweb/origin-backend-utils":"1.5.1-alpha.13398.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.13398.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.13398.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.13398.0","@energyweb/utils-general":"11.0.2-alpha.13398.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"850a331a1deecbcf06cc2d672797cbb3143312f0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.13398.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-decApEjgWSDzgpdsDdA80Z563Nomjb/xBsxsE0GZZ552bxK2Ke1qn5bbMrKtx66JIZyKgDTumZrAYfp/MO5BzQ==","shasum":"1d7a15e105a4c743fb3cc94c31743d625afa38f4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.13398.0.tgz","fileCount":78,"unpackedSize":1521742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNMJHCRA9TVsSAnZWagAAdBwP/0xFo7F4KxnJXyheRok5\nBCjgQQsJHH3TsOLjrrLOOHO2cVD3UCHhkImXY85bgWONGe2Q1St9vnToDH+h\nXzlSftRZTXCsZIntf4n/bWqpCEef/LK2p0O7hx3ajK0+a+9B1JypOk9KoqqB\n1YX/reyQXP/nWX00sYLBnpnFV4YkdZeb4ck03QJAwCH/KysZ/pCc0mqMGU5c\ndLtsr4kLEjo+HBWuGG9vury/51rce0hyfPVEC5d4tGcLMVbLAJsX7JNYO+pv\nBF48Z5ch/7/VDIe5K9dKxWgBk2UoBcdAYlN/mpiUqgIeJ0+vSXBHf6ogSKxU\nRYZC+B1SSr0/3PU2DucJewMQ9MM0WOXeITs7jLhybTKUGkXEL3bsACMhGOux\nh+gOcwX7PDgDyxPwjyTLPW5sndZ36+E7MxRpv6I5XzGbU/F9bcj9DERlVqbo\naOoPUjw/MQ0YDfcHhdL8XkqcnWIRzUvU/Sk78RF373PNw4lTmy45ffbIMU0v\nFJbhqhPkTqrrrTB8EZVVKDPDeh/A7Cc3Jgt4AsPbbu2rsQRFzYeum/MWNeXC\nTA/v+FtdhW6TX4U38J0T903/PG+8Wg8IvzGG6is2rgttnRYD7z+s7xmXdwJ1\n1eSHcZJsuym/y1vp8zCcQtLIulAD3h/8PMa4l2XgQKxtUnxwqVgUijWn3e1t\nnBuQ\r\n=1Cee\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbOHmUPpV/8l6co/vXKVo9Zf5/BvqmmPSl6m8y6+IFrQIhALovnqdvfnyjW+Nr2prkUG3RyN463IhdPQaCmfQ4Y1jG"}]},"_npmUser":{"name":"pkosin","email":"pkosin@protonmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.13398.0_1614070342414_0.8894114487928451"},"_hasShrinkwrap":false},"1.0.2-alpha.13419.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.13419.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.13419.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.13419.0","@energyweb/exchange-irec":"1.0.2-alpha.13419.0","@energyweb/issuer-api":"0.1.4-alpha.13419.0","@energyweb/migrations":"3.2.4-alpha.13419.0","@energyweb/origin-backend":"10.0.1-alpha.13419.0","@energyweb/origin-backend-core":"8.0.1-alpha.13419.0","@energyweb/origin-backend-utils":"1.5.1-alpha.13419.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.13419.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.13419.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.13419.0","@energyweb/utils-general":"11.0.2-alpha.13419.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"25db2b7bafbc148bc89b70e018311ba9a714c8a9","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.13419.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-SR+j3m8Hw/Plgo4QtRxUeGyZfMoDm/VamQsLjUS7GGEnzuIPu4hhQ/5iiEBTaVpffihrbncLD66CI/1Ud5AL1w==","shasum":"d0087b454f6bc3382368ccf79112fe28fb2f28ed","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.13419.0.tgz","fileCount":78,"unpackedSize":1521742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNN77CRA9TVsSAnZWagAABPUP/3mFVpBPgjMA11jgNpCC\nNRGCN1hLRa5WuKKEopc/5QqMvCxYYhFLMGHJuAzAAacBkYMYFdVRRpZazYBG\nFHiVr422PaX2TSbMzBEoz8mXhIEORRPUvZ/MtttHbYBhxq6pQjoQbaNv45KW\nVNAUagfNfA97FijL3ANN6HkCaWtHvjZCO3UdY+IznxorjM3gAc26zkM/fkiU\nvGZYtosz6CPWt/lslh22QZTiFn0iL/V82/NObv/wyoCt6SjGMKh97PiumDY1\nrzhkr2VlApAvaZc/8nH2ykaXxcYqXGxZ9ZCiRjFB8iV8XUxB7J0VfWxdA6BV\ngh7DLUoCOjbdke+k/wiBLtEPziPKxcoBlKmJURf/tw0WaVwCXQ+Gdp2+IcEU\nA9HIa6r32NX+a33HtiCqRwLM8RRanOH3GRCz60NFgvgjaE9dB3AnZOncAA23\nxyyw46Af2ZAjU4UsYSHct//MUpHz2NI4dSznADIkrBf55dN0vNKtwdcFOmK9\nQ22zT55NLvGf+AKWMtG+iW4IEHPMaTfcBeZlKLfhTi0+T9wWpo9bGtYeZ9/L\noOBFrCX6y4riSNkaKcVC4lEiG/HaGEjXYAFHtJBZayzz87XKHrvEaL9UVdpl\nnOrJKaieuc45Iv11QFwvAjYGy3R1wnZSND2DlsHB15U6nSwqCstarZEbEh8u\nmwkV\r\n=XLGG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8XYPo78SdMVJ9HBms+aKOMKnxgi0zcyJyuz0HAHFQGAIgZUUNOUfI/b/VHPgMZIb6iRCMavvOhaJ/86+DvS1iJnA="}]},"_npmUser":{"name":"pkosin","email":"pkosin@protonmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.13419.0_1614077691276_0.7661095396750293"},"_hasShrinkwrap":false},"1.0.2-alpha.run5.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.run5.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.run5.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.run5.0","@energyweb/exchange-irec":"1.0.2-alpha.run5.0","@energyweb/issuer-api":"0.1.4-alpha.run5.0","@energyweb/migrations":"3.2.4-alpha.run5.0","@energyweb/origin-backend":"10.0.1-alpha.run5.0","@energyweb/origin-backend-core":"8.0.1-alpha.run5.0","@energyweb/origin-backend-utils":"1.5.1-alpha.run5.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.run5.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.run5.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.run5.0","@energyweb/utils-general":"11.0.2-alpha.run5.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"716861bf3ac751bebdffea4574c4587be441cde6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.run5.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-K65R20SawAWS0QgeZAYEq8L1adND2QPKvBF0MVeJ0KavpcoU7FCZu8v1pUBs8Ri6v1aTs0fAaKCHKGxCQK2enQ==","shasum":"732d3604798ae213a87b1db23cf2318e1e243934","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.run5.0.tgz","fileCount":78,"unpackedSize":1521729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNgdtCRA9TVsSAnZWagAAgBYQAJBM+C1cqyYI/af9fywL\nK0YkIS51PNQKBXM3yWA5xcg5WLjipp+95Sx4PosDCeXHfbmHnzsMbfrzhVWv\nZ4UiXdOK77b3f3XANc0mEeTP+BYU8vqfWMW0/xtYxv4w7N5QF68HT7dzJVwC\nmgQjJf1GNHMfK+Ymq6hAmdH89GBz5CfVMOSck3XN7ql9YDAFv7CGDt1Q3acK\nDBJRDDf09RdKLMqjcNAN+jhHmn/NSRGP7rF2nKqZ9WYmyoNy6KzlmDrttdOT\nHHc4HPGJJ5bd2OcCGP9zgsIYmO7HNOoqO3+Z/8LRweBEWZ69RU2VnP04SDXl\ncNtoHfyoM/Ia+J2vRg712h1oXMYqBf5ByZHz2IFEhSKqQzKG/N7GC41VsVUZ\n5Xibd5maMenQEeohUY1jpMW9kVHMaE6uWL6sZHnSO4uDnjg+A/H3WiCQX/5S\nMTX5vQpVZFrLN+ce2j4apU9lpOVwCxoPjVvlCTCaH48pk920RnFqI7rUnddX\naymz6qJEhvdPdpo+p+OMZPEJVV5LawlpFdBuauD9UAOl2tFAj/3GL02OwFNz\nfkyE0JbYsa9bx/6uV9bTiO244hi1cykcRLHtsvWYwllmApyK61OvUAj/XlOL\nQxfUnEYwuLGNc6dablik5ZIVxnBIm68EMiQkbQPSHsNqzIsG91FcWH2qRRXX\n4NRJ\r\n=jRXU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzhlH309j2RpTaLQg+La2Yehqh72wAHmwGh2lKcXMFOAiEAh+8Jjf5zcMwPQ0O5wi3EubU8n8zItFCA4cqa74pD5Ro="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.run5.0_1614153581467_0.3457407017202776"},"_hasShrinkwrap":false},"1.0.2-alpha.1614177077.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614177077.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614177077.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614177077.0","@energyweb/exchange-irec":"1.0.2-alpha.1614177077.0","@energyweb/issuer-api":"0.1.4-alpha.1614177077.0","@energyweb/migrations-irec":"1.0.2-alpha.1614177077.0","@energyweb/origin-backend":"10.0.1-alpha.1614177077.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614177077.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614177077.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614177077.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614177077.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614177077.0","@energyweb/utils-general":"11.0.2-alpha.1614177077.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d01075880028bac9171954714967bf33458e1e6b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614177077.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-YXYRfSVLMBu0ncrCH5vSydGqDj+vu8zXkoEeOaaoQQN7r+Eg100dBtabrVup3qj0HnGu2E4RRcjHIYxezSNeKg==","shasum":"9e0ee5cbb641cf1562b959fe2598cd6558ae85d9","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614177077.0.tgz","fileCount":78,"unpackedSize":1521812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNmXmCRA9TVsSAnZWagAA/p0P/30aUeZoXkiTZOJExsl+\npFVolVXtKb1HNvQkYsa3yS6zGrLpAS84DjSMnoCChXuALqBGc7FuBPJTtxVS\nBbNGifO0/Lx2J5HwMKrlW2OamWpInW6TXPYqDRtAyWBP29h3zf+Nr9GqH4QX\nNdNeRaFopW6b6PqsD4swoV1Tv6gGtMk95dpfW1/BPAAukc3mKOKmINo+ncE+\njrTGVLIFPgZ5Z7PUIjNFWJ7utG5fdouQW5ba/Lr+6B0T+48I8+gvznh24zSB\n+7mKLmMiX6jJnY9Abzwh0PIM2qv1sPRoEygjASkSVejZaocBVL97aAhsN+n7\njobeBpGKeK7CoJdg9RKQRRu98nTyy3nyUPSz8IlcOepm9MiQzQAzAm0Figrq\nV2QEnI0Wzdj2SA5Vq1Vd+efZnOsbpsBMXVaTyhcPhsS047n0sx7u+e/VDCZA\nh+IsaYHjTHzbdo2cvqfHzxidm3r/2u/15H/hqOmVdtin10+/XLUhucgLNjDA\npzMrLYN2OtPQRMldXUl3KE1F0HRwX/nHeaEiAtCaIvQTUsLuvVb/vLsZh7AB\ni1JJFgp5vWde2tXSLgjDuSrhNvaz85ro+IUCwpTwvjTgmyVLpO0ijNAgjR7s\nNbPvjf8+FtkrXIMP5tvtGds0aDuqCX7wlYJ5L+vTCuIL+YjBzjj8mBTfy1NM\nHowf\r\n=hMmz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID//BbJE3Q6Xvp726EAddsykAPzVtsaqj/uQrQOPf5o4AiBwElj5UDpPOFMQyLZHP6fbntHEgm2/cPVG62BBF8HRag=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614177077.0_1614177765704_0.099093905090337"},"_hasShrinkwrap":false},"1.0.2-alpha.1614247857.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614247857.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614247857.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614247857.0","@energyweb/exchange-irec":"1.0.2-alpha.1614247857.0","@energyweb/issuer-api":"0.1.4-alpha.1614247857.0","@energyweb/migrations-irec":"1.0.2-alpha.1614247857.0","@energyweb/origin-backend":"10.0.1-alpha.1614247857.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614247857.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614247857.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614247857.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614247857.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614247857.0","@energyweb/utils-general":"11.0.2-alpha.1614247857.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"46458439a6671cc283136d803edcab1a638bb130","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614247857.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-e1CDGk+YAFgTpn7v64FBedwOOVzse1A2w0rsZobdz9uou6g8E55I36beLqb2H/ILal18amlLl+Z/6l/zIueY8Q==","shasum":"82a864f184ed630307d2b8f93a699fca171d98a1","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614247857.0.tgz","fileCount":78,"unpackedSize":1521812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN3q0CRA9TVsSAnZWagAAJWEP/j0hLYFZbh5ebf6XMOIG\n7xO48mNVTAX5533xiGc7E2rKBN9rf6JjQ+kahsHnPP+wn9DDDzD5Xx3nVpIx\np7yoS4InzcIwMe3UuYOmUG8obUkCjfNh/ZyAVc77uaqHDPqfJfYGqU9dkCPO\nmIU7BcZ5Ar6En06yMi80F1FBPWmtlaTr602r66Yc/vVivHyLvqfQGvjy3NMb\nSlNIl+jUiu6QS7nzu5A3sAXXgzN4LIG/sXBDPPAyE0PHTTsjHkPYY4E/uSK5\nrnfgqF+ezNz4faByZBpg2/tNl8IsBHeeFhP7LXTJ1PEuUn86PeDvSnlooa8P\nboQZsPCDpG8UDOMbRXt/tS3c9whH5K/QhoDkLqbdLceMcyYnb0pyzn4vByu8\nFT7wAZpzZUEArbt1ON6JAKYmJNV0/4+GlRKldh08gXnlxGIlAuFfJpgCH56q\n/hbhbRJALHLoyzdYalkNxuMf3bNoD8+f4laH4ro2KiofcvwMBNVct4WCGaC2\n8moesm9muu6pEe4c2nrjU59JFp80bB+Dx1dTpeYyd4jdKXjY70CM6ju+skU3\nryK2t2bS7ChO3jaUDccXCWHPD4rFIiRcTkOpWGX+VdrAEycL9ZQhuVrsNc0J\nRvhW9STyuAeF5zotA3soeLQiuUAKXsfISJ2Wkz+yshMm4mxzvY/zHrurtoMa\nDe+V\r\n=wtJm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfkecix94aaiY7SUako/ebuTPNae9OaEMqVdHSf5rfvgIhAJVsXTvIoA4iTfjkBaUjLPKrLZ5EM+jANtn7fVl7GJtU"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614247857.0_1614248627899_0.42069858816193895"},"_hasShrinkwrap":false},"1.0.2-alpha.1614250414.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614250414.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614250414.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614250414.0","@energyweb/exchange-irec":"1.0.2-alpha.1614250414.0","@energyweb/issuer-api":"0.1.4-alpha.1614250414.0","@energyweb/migrations-irec":"1.0.2-alpha.1614250414.0","@energyweb/origin-backend":"10.0.1-alpha.1614250414.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614250414.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614250414.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614250414.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614250414.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614250414.0","@energyweb/utils-general":"11.0.2-alpha.1614250414.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"46458439a6671cc283136d803edcab1a638bb130","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614250414.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-s90fXWnjRUDeVQS7prFro3UfTJCDPGuZdiTrVJxyYWGeFkxbIReBn2KVRun6KrxMh4GQvAdax0R85TgN3dkHUQ==","shasum":"4d87777e8559bdaacad9a54843dcdfd6a34e4d17","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614250414.0.tgz","fileCount":78,"unpackedSize":1521812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN4URCRA9TVsSAnZWagAAonkP/A4/SLpu+C5QfQkmPE9J\nYAeNTsS9nSUgvECjCc6quDkJB9iv8XcdA+TvgDXQxwGwn4Y3mMOe5FhlovHJ\nZmIgChtZ9bJ+f/NNIcGCw4aQG5BsWRXAHPIGamHLAxuIHkavHFtxb3jJV9Ju\n87ddndnwBkhG22NUq567OFRvyq6b5CCLw6yObRsaZ2aXwb31p2oEiY13PA2G\n+E8F40Sh6dj5HhzCR4A5W6i82JRV6jMB8ALvLlkQFFu2y4l9FzFaJEbLKWYn\naNoQFI/kK9MYmfnBS5kDr5ZvvuOdzoyr+4UlgQaFir74CzgpmibDsBwcVXUX\nS1x/6UFZCiOHhjlM7qKgwAg5xhed7zbG9at6qZHr0ZQYKZgW4ol7WbAGxmZ3\n54ct6vI5gSN7O80pA+3z2Y9fiBBmbeGKZzP/8H4k/d/Uj3gxQugr3LPZaD7x\nXfZGlGP4FcPD6ihZ9aFkgM4gluikSGhvoFdOmlQnj8T9XrIyPL8jJL6mGhIG\nfAo9Y2Qw0XhR8vzNej3vP2vHYxzPWyL/brE86IKYUA26BHo7XEGXsr+j78vJ\n49F5WT4tLG2JbFe5/bFa3Ic7Xu0S2hAbR9y+TE9ZRN9mk2/rSh2xt/hYuhT/\nOZNUVpEePkt83s8vrQ3q4+LMm4U6QtLh+DCAg6LTE7OhqNK8OsGeXc3PtQ8i\n+n/r\r\n=NooV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFnU7CUL5zPbPnQX3ObzpOph5AB0jwHzP05ZmbHFRBNQIgXMVA5LrJ60r3CkjRP/G/zWSSzABtoKUVHOH/agVHjSQ="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614250414.0_1614251280825_0.08562648158870867"},"_hasShrinkwrap":false},"1.0.2-alpha.1614256614.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614256614.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614256614.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614256614.0","@energyweb/exchange-irec":"1.0.2-alpha.1614256614.0","@energyweb/issuer-api":"0.1.4-alpha.1614256614.0","@energyweb/migrations-irec":"1.0.2-alpha.1614256614.0","@energyweb/origin-backend":"10.0.1-alpha.1614256614.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614256614.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614256614.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614256614.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614256614.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614256614.0","@energyweb/utils-general":"11.0.2-alpha.1614256614.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"acad2afbba29192bd0de376a3449185e7a91d496","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614256614.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-0FsLkQ0k50kIw7SWw4OmTTAisYt2WIOrxP9iuY18JrCc4cq5mZN+ape0nm6Sh5zsG3/84/JsZaANbrloQx4OQg==","shasum":"587b5bc30eb9d2de0f861c41b7104fbc9a227e5d","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614256614.0.tgz","fileCount":78,"unpackedSize":1521812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN5yiCRA9TVsSAnZWagAAIXIP/jfLg1iwi5kef1t/C+Bx\nIAU62E1Totul8e10vngGx4rFEWeIWpYqxppdE5L3TwvD1Cv/kDqZPM81F+Ns\nBEvsHZJgqEBnrB+QG7U+3pKsHo1Rf9aA3HnMIMp8LWOXM3B0FzmrB9j9XixN\nzHr978h2VUdCuOw/7/14zyE1Vc4sSt7tJTXN9HiuLPYbMfWClMv+OVXegDcB\nCie9YgRUmI0tC9dJjlZCltqUDdEhmVbM3SZWuvnhdofE8itCTLVgW4zPMhEl\n87T7ybxLHtAh6ZmMyazXNnfeNsSFkuYfuU85Ng9kskuJNsD548B+4fIg4IvI\nXFXQIX4OKHpxW5WUphvFs9MAPQT4A+8cGK2vuIDjksHiHK41Ueq9y7Qj1yqx\nC3AAw6qoq5Zi5l82hKVOe38n78GYG19mvldIiJ/Ps+AFBOM3wML8MQ1oPyeJ\nDvJdTl8I2dSRtbRSlVbgUXSH0ix+8N7miQN7xjQKoeWIcGTirTtj3sPiRIbO\nJ0XJ0yqC1NmCmDGzaOIFYvdvAbxrBoplpFBe6q1XD6uIxYL80msQ2TZS1UR9\nTKVzeUdQHfYyiKQEXcbHToNE/drkmi0WNCINF8PGNi3h9Cuk4bzu5QhSIgTY\nlX7g7JSKTHX9ICsqED7IZNYlcV58l00qKofrysb2t5HqCrOt1rdPlfxuzS8r\nIAxc\r\n=uhDr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMip4LPwCXX7mmw6atgUF+zpO165cHVD7nFCXBmpuSLwIgaAtM8TyYhUawLJoX/G59T77FTZKxA3r62GKOsQK6NdU="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614256614.0_1614257313592_0.20570707964942714"},"_hasShrinkwrap":false},"1.0.2-alpha.1614334093.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614334093.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614334093.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614334093.0","@energyweb/exchange-irec":"1.0.2-alpha.1614334093.0","@energyweb/issuer-api":"0.1.4-alpha.1614334093.0","@energyweb/migrations-irec":"1.0.2-alpha.1614334093.0","@energyweb/origin-backend":"10.0.1-alpha.1614334093.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614334093.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614334093.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614334093.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614334093.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614334093.0","@energyweb/utils-general":"11.0.2-alpha.1614334093.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"64c41fbc3c964949d545570aa55fb0413c2b94e7","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614334093.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-Kw/iy9zgb0X/eU9VumCFvdwewldApYgM0UNOqcmrwyVy8yeJnAL6btEkUEEdE8MSC6oH4KNFMtJyqqZYj7qIfg==","shasum":"54ecf1094198a72e77a81eb174e0e2d87f5884f6","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614334093.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOMsPCRA9TVsSAnZWagAAMUQP/RUcAIK50UWxNjGs4nHe\nIk2H/8gEivWEG72C2H1WkU328WIIBW6VAehPR/5KrgNGzRdPAOjEeKzdRSPl\nhcMyxLymj6hp5R6p263LhqJ531e5kp+sj7Ziy3J86+MGtD21it+oSNM13aRy\nfl+PJwIVu/gGJQRhHhtfJ0DmrdCJ9HZiCJBU1u5n/lRuTftrc+722QU58rDN\n7lavsMLp6OmtDmcBIDl0zQZ4EguK29c4OJP3ceyWApOEAxYUjo29LMltt25J\niR7cCliM2ChwhGuUbks6Ovac8FAHZPPaBTAoTWedrQFnWJKOLi+54U+1WI78\nz4m1KPJVDdVLw0vhUhEKnAgO8WL6wCc9giEjxlLChmiVyrj/ECPtTDXw8BX+\najKTAax+0v8JTcaDaK27ZUQuklnMU3+oEO536Ofytt+8Qcglx2N7RWPGSNgb\nA4hN0Wkn+JhTX4X6PW2FUfpupuRYXntR1w4Ird4m5XUyXTeSvdSfGib2od80\noHTmzBgqCA09rhLBfS3syCnyKMgdSE6lUcgjyzaeagLiGLxU6XbQBlHQWvjb\nSyH0FScu9Q1sWbkY1VTsIU2cqc9zaQdNQ2L1Oi6bk03PVcBAqd80mca2E3s9\ny8vOZz7ZsQ046jLDabikF3N3v1ngb3n+9uUfzB5LnFaiqIvF/rY3trQ8xz3m\nq+G1\r\n=qjfZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICruMSI5Dgo13pgoXA2mhsccrdSc/7YZhXATCClDoMPgAiEA0Kza0k4LCr3v9iPzcUGc5Kojag6Jjwmf1p901i6E//I="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614334093.0_1614334735486_0.7525830731978789"},"_hasShrinkwrap":false},"1.0.2-alpha.1614394992.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614394992.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614394992.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614394992.0","@energyweb/exchange-irec":"1.0.2-alpha.1614394992.0","@energyweb/issuer-api":"0.1.4-alpha.1614394992.0","@energyweb/migrations-irec":"1.0.2-alpha.1614394992.0","@energyweb/origin-backend":"10.0.1-alpha.1614394992.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614394992.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614394992.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614394992.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614394992.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614394992.0","@energyweb/utils-general":"11.0.2-alpha.1614394992.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"317609a15112b9f192720ccb8516390627a49608","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614394992.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-qmkMgjUDiAFyG1DVUpwgqDecDizgOBHldRzqxheWGAP2nzcLrwQ51IWRB3diZEGoPCLVjHx26KjmS1Nu1L2NwQ==","shasum":"3afa3712906031b4389e52f5db94dbfb8c790b22","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614394992.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgObl4CRA9TVsSAnZWagAAyf4QAIPJH0yULAWLZeAB6JVN\nDxirTlPDb8LwpDRhuza978dgFT4U+WcE8OvS1xJ6iHz3v6y8oOSnQbsaWXhJ\nmZU+3xfahbnPQ1GgYJUYD2aaen4utswmvDmoOLmPBi2glRdU2jX8u+i6Dyhn\n+PEP9bwduOdY882aK4fkD509vpQHEyIKhJ45ECBhJvSVyItVPeCH0zBowUZb\nQpmFBQmfyBlUOsjiVtNR6jkfJW67Siu/KppxJbtzC2WsSRzxgEbBYSCwh4MT\nLGI9cKisuoK70/elJjHOUa+6R0wZ8/b/7nuRGd49sMFOsVb0XUN9IkN3aV+P\ncyA/wOP+oU3SLex5YG2bhAeJDmzqmuW88z6FWeHLWo3fIqfII8uyKsluL2A+\n4ItNtRenc4fus7URyyJ/oZ9hkmegXirK0GJPGP1bdLLSq87ZzcNQuGoSbUTx\nIu7LwLbGftW4yJy7dMTlaInxvD2OAgPWlg1vLKud56J+lYYN+LCn9sfwqysm\nZhnSPpla8F3/5ftYEJtW+gYCPUvS0w5qIonsCe8DEH4HNJ8S/0wBXZuP7Fnv\n+QuQA84sWYxpoN0RjmzqCiHlTlAhD4s2Tt/gX8D4eG4vvh89F2d6leuEg/Bf\nE6mJdlN9HPqv/ixIl98/zi1L0zlYavlFYTxzy0s1ttJLzpcwkDn+R1RhaJlu\nfPB6\r\n=QGKj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENlmv5VkNOfIkgjUdp1l85Q0pqQ+KiK1yZZVvbrt36+AiAa8oDBKbYlk3JB+bn0Pb7bpSRh2olV9O3muswJeb5pDQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614394992.0_1614395767601_0.9580643310820851"},"_hasShrinkwrap":false},"1.0.2-alpha.1614399731.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614399731.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614399731.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614399731.0","@energyweb/exchange-irec":"1.0.2-alpha.1614399731.0","@energyweb/issuer-api":"0.1.4-alpha.1614399731.0","@energyweb/migrations-irec":"1.0.2-alpha.1614399731.0","@energyweb/origin-backend":"10.0.1-alpha.1614399731.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614399731.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614399731.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614399731.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614399731.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614399731.0","@energyweb/utils-general":"11.0.2-alpha.1614399731.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"5c3f0c9625bab08bff3ee3d1a7baef078a70cb0f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614399731.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-9UZ032yquEvGr/OvPGUb43dD2A4YhGK1F2YmMk/JXT6G9UJGAsMmU5UMNXZ6ApIKRy6sVMvVz+MXVr2IHH7KDQ==","shasum":"3db8c9fdd54f894941fbcbf7bc0dbdbbf4bc71e4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614399731.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOcu+CRA9TVsSAnZWagAANKYP/2t78gTK8niNAltrYgwm\nF9gTYNH4oU8cypFdwGTjtl/bzf8as+pmRwZVvxSNCY0G3akCUqKPtZ00878b\nqfFEwICD/rVRi0wWXUfy0Jmgr3Rm4voEcuEo0p2VOooSH5HzbA9oW4sSEL7O\nA8xEbxoYdonq+RKvm3hPLf41jmCAVFsTauiQpzssLQCTWVAzdppxEX6NzaVl\n3ZTO7gL2ZwIvd+jr+euaYbGiwkM6BY9wvDs8SUJshbBOjx6DlqXfTLodZBiq\nmBUWQlb25iFVO2fe2E1MzGRP6mHFa3JX5kdw1ZgBwfKhqW+9b6qrJsn5kARz\ni+OZ5rvYbGfIu79kxSM+ubXxGKD7C/5yw1hoD+aAnNT76HYZ0u5fTMhzEnMI\nUA7fT90KVeWE+gucnIXWSey7cVvFvB0ftUm29+p7eoCtCrnZn28vVzSFA6NY\nuUivQ8Z5XUduy3IwQspPrwWVuGsigx4mukuH8P1DLvN31cRc7VKUQlgX76BI\nutaKGIhhWyoH3BXnnazu7+YqBzcPXHPK2C7+d7n8EazNws0LgT72kG4UTvRV\njxOVjyrjKqNdFQXvzvr/ljmMvdjSQWRTJ6vwZYQPz1dsSsFVElj+jJQ6EJY9\n72TaImsdpRKVrBcO7d5L75zOML00WVHN8+Jc3QHPunlkhLTsdcXcuvIetv4m\nsgJh\r\n=3KIJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeLdptUp59fmzOIVSoSNdVehcWTZ4bilza0wwNOP4JvQIhAM3jae1+VELb7SKhuF6b0miSLWaGkRF21oX/F4QBTvwT"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614399731.0_1614400445873_0.3368873151810321"},"_hasShrinkwrap":false},"1.0.2-alpha.1614414273.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614414273.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614414273.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614414273.0","@energyweb/exchange-irec":"1.0.2-alpha.1614414273.0","@energyweb/issuer-api":"0.1.4-alpha.1614414273.0","@energyweb/migrations-irec":"1.0.2-alpha.1614414273.0","@energyweb/origin-backend":"10.0.1-alpha.1614414273.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614414273.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614414273.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614414273.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614414273.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614414273.0","@energyweb/utils-general":"11.0.2-alpha.1614414273.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"e7588a5c2a6c176521aa664a94f5719cc438b0ab","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614414273.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-Lqi80Qfsd5ZKF7HR1sjf2E6LcJs83F2W0kWE4pxIAWG5OoVweJ+4JfrLdTzbq/Cllsf31roCIoLz72mqQTLtsA==","shasum":"33ad3a4b245bde59dd6791ea5234c1cb90b9cc90","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614414273.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOgQuCRA9TVsSAnZWagAAfjoP/0MtVo9cCCDXCVE3yJ0r\nVCZ9mYnh1eoHsqO0uz/t/KHsQI6CAvF8No7MONXCsXyebDpEuJ4C7w/owFe3\nCEYE/6uXE0qpXfp0EbHnJ7GVrZUdtfnQTw2UvbHmI9pZ4UwJn95TdXQDmPlm\ngWYZ18f+EyOXRc78+FLveCx9VoGO9u1Tq0dvc/I3abRYfK29zYkrCHDR3TyU\nx+nPfoZYUHL9rCu8Mc9KAnvM10ms0VY93Lp/ljxOlEf/kvrdAIV5vkNsw7TL\n5CXuh7bC3ETyZ30Ypr/qpwwXGNES//uHukvG0OudVRggeyKSOaRUA7Md0ymU\nCIVqwYgjnB/MWLw9fz7fTqNRmXjuuCyeh5dNuCYav3Wo5bSVtTKcMmJ+XN26\nXWgV1daTwd1zr0rfGuoGQyvZEjg6wFU2PPUIVdllNv8TczStuwgMaby7YlXr\nILk7v3KmluulAII1+56iW0Q/4rcw6qTM8C9xg75cG112ZX2n1pcevP+2VEgn\ng+6yYAcytvQsVhi+z+LFB9ALh0mdMyGl7owOY87BVVY7WDVW2v9D5jQ3ulAb\nZmavtq+9ADGpu3MC421WGReNt/npW1yfOt0B76TCHA1RgGazZN3bkf5e/kCB\nRYWFQTnRGTPacpZY2RBzKLwtWliNb7nd0Sb8OkVWQXoRER3b5Mh/XKxYq4YR\n5YGQ\r\n=qjyk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQtPzR83JV2Z7G2U9GOHoWtLteeLLmle/MMpmHIQXdfgIgJWFJEZoHYFEebX5e0B9sJGF3K0w3/eKMjA6WpTTLK74="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614414273.0_1614414893865_0.9248560608541398"},"_hasShrinkwrap":false},"1.0.2-alpha.1614421250.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614421250.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614421250.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614421250.0","@energyweb/exchange-irec":"1.0.2-alpha.1614421250.0","@energyweb/issuer-api":"0.1.4-alpha.1614421250.0","@energyweb/migrations-irec":"1.0.2-alpha.1614421250.0","@energyweb/origin-backend":"10.0.1-alpha.1614421250.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614421250.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614421250.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614421250.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614421250.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614421250.0","@energyweb/utils-general":"11.0.2-alpha.1614421250.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c9650d254db445175e4be6529d912a56113f7997","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614421250.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-dgR4Ydfd5zfCGebUPGVHpzY5bSVNIro819UAo68a8Rg/Tk5XGtxXq94xx/uEmS10oEhP4mFCBlHr+lNi/QU9Tg==","shasum":"a414427ce3341d13f5f5d0550a473e97ad02fad3","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614421250.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOiBDCRA9TVsSAnZWagAAT50P/0pj14V83JJu7v9C1Wwz\neAABTME8+/p03UyoArfGFuVghrnq6zEGW41+FYwZcW9qssffTju2zPYN94FG\ngOaqobeYj6IG9sVt5J9rhJ6xIdq2DSLtqrLBxnHGjjVXrgK1IBAuUACoTH13\niNhbbYP0WxrKVZku3Un9G9TEqgc0gIaudnBUp57xqkPJZdHgSM07C/Em7y4t\np7m1E5qNj1RM4vu3jdKBWE8VgNbYQxbJNEjCuB2ca92iT38lFWQkKubNoBfG\nbCqAaz9B+3KEF6ppfeuRk+DXlE3sEKBRZGwnQtOhAHQnsx3WHgjKKrm1n42h\nDHcnJh0vYOp0PQ4JVdcjcioxPuVcEHxZKNqEfiJO8VwRlFeP5IIcG5MmAYGl\nE8e6gw5ZttDMJlYp+Fl+rSn9w6JK1J1+DOMT1dnvRSSLyVcvpt3ySI115WxN\njrgAaqYQkYv3Zggalap9HECWJqJgJamLpv9ZwurP7LC38mfFz6qP8WNErBfs\nFVao/Sx0mE3IONg/LdTwULaKxzGpTs/fMKdHdhCwQaCf5P6Pl79JzYI9522k\nmQIF8R7I2gO3580wm87ClBv5f9A84eILVGa+yH22DvgYVhIMzt3yAw4Tmlhy\n807k2TpzcQkJhmSuK/ZqIIhLSa9zWE9x/R5uNqeI58zvOiz8D6EQYa8nVnNc\nZ+JQ\r\n=Jek7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvsu9icik1j0OiJ4wGb8eZxruxIKLo0R3aBL3LpIYwsAiEAwX0Ll+tseaSKcmzWOseMqW+aPdikBSWNJZZbnwFQkSM="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614421250.0_1614422083108_0.9429362000947923"},"_hasShrinkwrap":false},"1.0.2-alpha.1614425483.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614425483.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614425483.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614425483.0","@energyweb/exchange-irec":"1.0.2-alpha.1614425483.0","@energyweb/issuer-api":"0.1.4-alpha.1614425483.0","@energyweb/migrations-irec":"1.0.2-alpha.1614425483.0","@energyweb/origin-backend":"10.0.1-alpha.1614425483.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614425483.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614425483.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614425483.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614425483.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614425483.0","@energyweb/utils-general":"11.0.2-alpha.1614425483.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"937938001a9c8574819bc987d9984814c8b12e43","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614425483.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-Sqtfk+K2JZI4yrfEIh4NL92zQnKyygIbgpbR4l77cisp2HmVtykoqhdRecZ3WLQvWtv9yauHfO7t04ijuu7hdA==","shasum":"eb1b750673755356ff54886b2676f3e6f7be26e3","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614425483.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOjCdCRA9TVsSAnZWagAAWwIP/0+oreSaCiTTNBFM3k1Q\nzia6qtaPlaBhaTXWNVSj82EWjtAXhDsaAd7SMYEwBDgi8AyCRLdlFqf+9bPX\nK1t096POJZDKDkrhxHA3YdRNcdhCPMpgNrLUSiMf7fkTqWnYAJzyU1qz06Om\np6lPl3eUm7UW4VpksZnKJ8wKADA93FqZ+W4uTwuWlScidfsjoo5j3fiErgRM\nU6BG3O4o0w/Q7D4BikL2K9LfH5efP45GFq/Whtz91mJ6ts3eotjtzLZWEH5e\npLdhuODTucgQq5f0s6USul2ZW9ugRYlzA9rJmtE1Tl0J0WtIUa1CdYCTieBZ\nGPM6s5OSTnO04Te3bm/HlO4K1MFzLniY2gUOAZiZUdFlwa8C/md5J1EUBIa5\nKkXpuYWvx+2lTeluUNFqtVepUBWexq5XAJKRrnwcv6qSNFS/0LYqC264f31a\nuoQjeRhHA9WGMW4EIW0SlStZWPb1CBqUKDwotxQtaZ0Ss1z76pBgpTPeqM+q\neV+lic6vDRN2VkkydQCZDb0ftFSer4mrzQoN8lqRiBFjWsbXhh40kC90fKZg\nYXTZuKM+oNyzOcjsn8JhFWFOjOLN36CzQ3XkjNntOxMzazv9Q0TTN5FXHiCa\nZGeDoq0JlSgv4EmXxwdAHtpNxp1dt0QjYWHdCyT5g/Je7xLEaZYsdEkRb1jf\n3z8y\r\n=L8fd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7/0++kCgvfr85FCTrP6SvFNNwabSeBcCbR+UVX+EA0AiEAmJrDENPCSKsYf9NS0AIOhOVmHvtp1/hBQsFNhPq2Upw="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614425483.0_1614426268851_0.5255604138471377"},"_hasShrinkwrap":false},"1.0.2-alpha.1614429351.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614429351.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614429351.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614429351.0","@energyweb/exchange-irec":"1.0.2-alpha.1614429351.0","@energyweb/issuer-api":"0.1.4-alpha.1614429351.0","@energyweb/migrations-irec":"1.0.2-alpha.1614429351.0","@energyweb/origin-backend":"10.0.1-alpha.1614429351.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614429351.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614429351.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614429351.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614429351.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614429351.0","@energyweb/utils-general":"11.0.2-alpha.1614429351.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"ef4cb3827ac3da40b12df490024906e8a4240ff5","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614429351.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-895VZaAkpokMk2kEJi/DG3mfUOrkycxR3DHZSI0B8x/zb+UgkG5jEkbHTjM2GB8u1H/clckeoxETwKPdPCdtOw==","shasum":"bda6314f614d74c944f369c1112152ee449ed143","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614429351.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOj8rCRA9TVsSAnZWagAA5t0P/AsP4kSnUyEajbvEXx7V\ndJvynWUcIuRjJ/PlOV4hNWWwCPgGwxLfvQZ5GCSOA6zalRwhe2J01iFiYFDN\neI7DuL6z5Znq7XVG85KtJAu/9NTfGzurkFaNcFjHA4QpqYBsGdasYTpa/6gS\nahTnUDG7bBNtDbXGpv5jp4BC/hlWNRHx51sc1AszcKEDIQKE6hOiyeKlVhkr\nD/4wjJCGUvvXfnruQUzphjFkgeZy1Eu4LtwG6jOcwOcuiNqLEesoaFMPKow5\nDPP3Sql1nC8TNbnkmTwZmay8lTwfpSr6yU6JhoiHAcfCYIpfzvOI0XnbBDVJ\nUpCWYAlzvnstoXMbPcAHzrGxBFlsWRuBX3jn3xYcFKU8SpY0ukf0TYbGxFz+\nHwUr1Y2slB5xUq+C7yg9Ql5Tq0D3UxVhFo7SRds3QOkIDfUNuhCPxiavo6Ac\nMJ3vRWs6ORt6GslkiMXaqAfPLXJN/1tDzzCUqarxVlOCWsytFUj+dd6a+4cv\nTOV02XDkFHA/gyt6iooGJj3ptd7TPgj5h2a+ZkOV9obqbo+nv8qeIgq8Mut3\ncpH1JM2yeiVprSIvMIb8025LtB0NUJ05gRzXLcouWnHTkQ81NLCx9+Sx5cID\nqSXS7PIwUBjf+I599BEzM1zsshLYcxD0W3bSwUhL5LD78JMxZRrrPi4fjxmP\nJNed\r\n=2f6p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtugTfc4yJ4hOnG5vXdrqyOsiEQ8iDOS1xW8e4vt3AfQIgSajEZTjtWpIErmFtavrAQdiJDMQLOkFNDKStDoYGyS4="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614429351.0_1614429994853_0.42868470179459406"},"_hasShrinkwrap":false},"1.0.2-alpha.1614432717.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614432717.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614432717.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614432717.0","@energyweb/exchange-irec":"1.0.2-alpha.1614432717.0","@energyweb/issuer-api":"0.1.4-alpha.1614432717.0","@energyweb/migrations-irec":"1.0.2-alpha.1614432717.0","@energyweb/origin-backend":"10.0.1-alpha.1614432717.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614432717.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614432717.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614432717.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614432717.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614432717.0","@energyweb/utils-general":"11.0.2-alpha.1614432717.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"b5cae128ed923cc153861949b35b387cbbe3b225","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614432717.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-o0NtVWpKbn++y53zvNTWknmX9FOlpZaPMH31nRDdeZTZqDQbzwvXd4fDqqn06G2odP3OhZke83BF9bFxhW6sAA==","shasum":"f2bf4dd65bc15ddf7a0abbdf00a77721ac36256a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614432717.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOk0YCRA9TVsSAnZWagAA5ngQAIYyM89N6wJEwMgAupQJ\nqjWIr7CDulprtGV1QLsxm0cQox2AGL5L9UNtFiRnNoxryYBNq67x15vdP7g+\nBHbq4M+dK/8DZSefSax5HWuXZUmlIszQJFLM08wF1pnzy+kcNx7Dr3JlOVfC\nPF75Skjybi6fqZemOHzGI7vtF+Y3cxBWjEpbEjXrzVi2M5A6bsqnwJT0ng7w\nMLkzbZiqgYa4l3HsN935yuOQ2/n1oRFre0ACgWGa7RIff/7A0IA0LG6VsxAh\nV6CHefJ2M4UGRi5nqjyjQOVDYPS1K8b3bDk7k/0ci6HWcwo0/hY5ilE77sa/\n8a3rKfFDbzFgS6heKZtwz92ecv+uCQ/RSJYmMp2PdsYPUUvGCssr3B3fVhCq\nnDfU4QDWjOby+rh/h0gHR6KEPcEbYYploPJCWRqDnoaBwH7ffqc7tjHxZsgY\neyNSEfL8VecItTaSz/1Qj1lobsbjPMDULSwTKDxRR+pzmlJ6JEz6E4cEU9kC\na9LCSr++Y3Ct7LZOszghs+1yj8PYakLRDICm8SE587mkL+kQrLn0Q5Q+sqeR\nFlHpZHj+1q3hPBRv63RQwhg70IBKXMiabmT/ymu81fi7PvGLATqZRfp6WbhT\nw4AAgnFu6P6Rl5M1D+pMMZdVzHIyckdVoCW+GcWe1jc/X04K7a5/kNooEe/5\neVdB\r\n=E6Dz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbhMZxamDGSAaiOuuTPoWwNdOP6KPvjpf9DWyOuNzBKgIhAJrbQOUcb7Z91feS5LNhPOfZcVh3ocewPaDWuNW7klTu"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614432717.0_1614433559800_0.6042650653061394"},"_hasShrinkwrap":false},"1.0.2-alpha.1614438249.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614438249.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614438249.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614438249.0","@energyweb/exchange-irec":"1.0.2-alpha.1614438249.0","@energyweb/issuer-api":"0.1.4-alpha.1614438249.0","@energyweb/migrations-irec":"1.0.2-alpha.1614438249.0","@energyweb/origin-backend":"10.0.1-alpha.1614438249.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614438249.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614438249.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614438249.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614438249.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614438249.0","@energyweb/utils-general":"11.0.2-alpha.1614438249.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.12","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.12","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.12","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"2bba345b5e771380b2a388f4da5fd5a2957e03f8","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614438249.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-SqqqNoayRLe2hT1xDtVZoCEpeMMGZ1U/8e/JgfCVVtnBVXzGBwXqfUm7c3sIYRpF0SpxM0uTTmLtnO6akKawfg==","shasum":"0ec441c57947dcfb7c09951c3c31998b6deea944","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614438249.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOmKFCRA9TVsSAnZWagAAYxsP/1fq2Hk01z3JAuUgdAYm\nhbzOZheBa55H7iLlqBodVxv+2hhMWrjiFoiWogUits3B/RwLOVTq2zEZ6h+N\npnkWHhQOnbSbWZKpa/pCK9AH4aDZIRqnE/bpWprjzCTPj04isXMUSKI/HYlP\nZxlprAXYl9WITmIAy9JulHq/9Kj5dC7l9g3w8dUQTr9RMv0fzdLdxbYkSpul\nkxt1uvr7WO4VhpqykOxahMa//kHhiBLHmn5LK8Vio3YT/SLRYv/scWhWGUbv\npGI0F2xOGMUO4o5kgInTusKmjOqI4bEUUhVcD4qJTW6jCfANMnBAN4WDG4Nl\nr7ckVdW/AOXolgmQAWZesT/amayWybGxWHmbgAH4SCbQbjyYaaD0adRJfBqJ\neNIdUdHQbsbZSCiTa9Mx2gpHCr9IEDJOuQvDSfBUXO3P7h6lAqRoKLQuo7XZ\nzK3vXZeXn7nXBP6Yn9tV8UTP80AJnvJGdAGw9ztgo8M7EXfBIfL+Z+GSCERd\nuRir8SQooEWmHdj4XORpO0nIriEcIyWxskWwypK0zSSXxJunqcpcvK8orKWg\nNgeRBwtwaS7kp4Un8XFPY0Qa+/Hfu+sT7iZIgbN2S8vKIfJZ18imvOjmYVVO\nOe13mF+NEjklVe4bQwpGOUEmbQeNArVzMKofs3Z+RwdsOecJ4ILBS1jCZWgX\ngY+Q\r\n=2u5J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDI1eFS76Usz8EIbied/9K/P/p2M/+S1/d3TGHkaEqfKQIhALLBaTHX+GLWcJZiLiQ+jIMpqndvmAsUM2omeo6rB0yG"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614438249.0_1614439045072_0.12466407207857544"},"_hasShrinkwrap":false},"1.0.2-alpha.1614441559.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614441559.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614441559.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614441559.0","@energyweb/exchange-irec":"1.0.2-alpha.1614441559.0","@energyweb/issuer-api":"0.1.4-alpha.1614441559.0","@energyweb/migrations-irec":"1.0.2-alpha.1614441559.0","@energyweb/origin-backend":"10.0.1-alpha.1614441559.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614441559.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614441559.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614441559.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614441559.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614441559.0","@energyweb/utils-general":"11.0.2-alpha.1614441559.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"e1fec74e683362bce976443935f649c867b0ef57","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614441559.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-4c2icpIX6ey+ZC45bC8JH6pjwiAQdq49kM7VkCo7jJAEtY+/y5n9QWGJSn3hsDUr9ZiSB7W+Mmu4onHOGh40NQ==","shasum":"be1fd5b64a7f41d2464b719e1f2de0afc577241c","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614441559.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOm8uCRA9TVsSAnZWagAA4qEP/ivM9CwFGrJaPwBA58IS\nJouKMiTvZIS1epehbvlE5xgOkuR0fDg7ToIro9kRK1Ip9kLAbDWr0klKLh49\nwPANot90yFuEDjN2zDt/VH62MSd8lVSQsCkEEBOoa4rbh3ZpwonXaZqP5Jjj\nxmbZXqWYaVd7/qOOgCMIZbLKf04St968E5FUJ2zgaAd3GmE2m7jwhE8ziq5s\nYFdwJu1G8+/RXUyrxiPlTt4/8+qKRrUYR683UI7/AlUgDlJ6JF1S6F1el6v9\nYXXQ688otx0RAHa3AXNyLJVK1XDSK+Sm+YEN6ub+6rJoLybl0OEVfKUrtjtu\nB9769lg1fSMW7Kr1ZciekiqL5AvYlPbbsZ6IapLIt8yHMCYMRlWwrqSVHhCq\nGkWE9uIsQDTZJswsK7b3xXuokc0wwpeEuTwCCtY3iAYnp7cUHvGDzazGICts\nSz9sS8X/f0ljNQgFswTXdJF3i1HB87HS+2Xa7zJA+DxwGh4m9SsxhScW4tFz\nqESoKvlAslEuiRGbVU761RDF1JrDSymGQ+Eakum/ZvPEtjAjHZ61T0F98buQ\nysv3neskztFl1hFp6xaYzltQmuW6wjkwCvVYGDzTpFQCNYsI680qAVH1hUBs\nIVpMKd1Av33X3X+hZ9P/7TKnd4h8tA73hqi6/FG1YgrU+ZaIGDVHGv4+WsvL\nEtRW\r\n=YbHE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDj9Lunkk7D+/SNLVm6rBiuuwIiHSqz0UXQ2S6a/tkgXQIgB6Uul539mS28GuY9Y1f1vUXnarn0ly0nrjnU0j+83B8="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614441559.0_1614442285834_0.17213295330602163"},"_hasShrinkwrap":false},"1.0.2-alpha.1614445444.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614445444.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614445444.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614445444.0","@energyweb/exchange-irec":"1.0.2-alpha.1614445444.0","@energyweb/issuer-api":"0.1.4-alpha.1614445444.0","@energyweb/migrations-irec":"1.0.2-alpha.1614445444.0","@energyweb/origin-backend":"10.0.1-alpha.1614445444.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614445444.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614445444.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614445444.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614445444.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614445444.0","@energyweb/utils-general":"11.0.2-alpha.1614445444.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"db91b2a9988139f8da951734a3023fb02ea2b64e","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614445444.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-cZcAXgJM2pORpnEE64ZJwUTeM+Dxx2T6JIABYYvysOYVjS9FENc/Nd8nbKI3vhVL4IlHOUPPcy5FatR7uRkY0g==","shasum":"72ff15591453bce01ab583227301ce559482a675","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614445444.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOn4hCRA9TVsSAnZWagAAPZwP/iTNIOU6HwWNJnDWZKHh\noDujb0kTYXtNiNaR1A9cKSxf4T9f7KZgQcesvoXzhmyr5dd1JzYuN5s8HmVb\nDRlvmMp70YW8Fj0vE/cOC1DL4MwNh4iYFfNj5fs/0Z2bt43bM5D13xFrQAUK\nblqEEWxEm6YFUTC6LD2pdu7t1+wGKNcwLFAdM83+79Foc8E7igTkxx4CWt/Z\nZyq3YOfndyZamI6wQmbnu2oHfQmEt466PrU28cSNnNrG+yYVTTdITbiz+Vna\nGNYke1vtZhsbTBMaiLgfSquOmvWZLD8cG3P6hZn9rJ9lGzVXY+ZgGwJdVdnW\noGWyn4jiO38SiH+rVNE9m8M6DNv0grhpVRdl1eEVkddWhuvSOm4n5ASLCv0q\n5xg8y+RRPTgGXwAiUW0lNy+wDHISXMq+80MRXCLJzYfDwB3AmoCVPgVlId9/\nUYocjYuKo6a/Pae/5dze6lqifS8SGpTf0p+789vxdlmoPy14wz92p+Nal4wS\nvLg1geTRIjRfWQvdy1VxPh1S1fjLVYpHgcn4Cyjru4pA08hE6dQc/qLsqJJv\nhytKN6YFHZEbjzcJA7mnZESGRs3xwSrczd8m31JlW0BSCqy6/H3liYVsqWul\ncAfr8zeFNbAXnHMvjsBMVXHjbEIVh/yW+RjywgnYgKGImhISi5vUHg+uHzAI\nXn9P\r\n=8WnM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzBkr8WDxjzHsYJbOVp3EL2rQBpJmxxQIz0+eTiUwn/AiEAqkMvApoCDPsgM7EAeIB39ld5N33REVX0m5ulX9/XF4c="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614445444.0_1614446113469_0.7608188902957986"},"_hasShrinkwrap":false},"1.0.2-alpha.1614447450.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614447450.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614447450.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614447450.0","@energyweb/exchange-irec":"1.0.2-alpha.1614447450.0","@energyweb/issuer-api":"0.1.4-alpha.1614447450.0","@energyweb/migrations-irec":"1.0.2-alpha.1614447450.0","@energyweb/origin-backend":"10.0.1-alpha.1614447450.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614447450.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614447450.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614447450.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614447450.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614447450.0","@energyweb/utils-general":"11.0.2-alpha.1614447450.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.13","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"16892d121f1321cae2870bfd8b47ad1e41dfc14d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614447450.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-6iEQ58Vk+fl3XZmQrp7Qa3psAY/fdOm19Efce1I9ErE8AB2j6Us7GA0nEIHn4OGCo1tMsQa830Qa3K86iyJC0A==","shasum":"14d817af10dd824c77488928d55382bfb342c288","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614447450.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOoYvCRA9TVsSAnZWagAAqRMP/2nu5pd5ze+UJG9rUCun\nn8U34CA2zpns3uh3dsteg5B/CMPcii4jxBRHOWnDffeeIyt+1Uu8JUOcF103\nAbEdkfyMfCbmu4B1YhIQ9YMxqpJyMWAAziuvt+LI1JlQBdIFW8lfUZVGJ0YX\nJwK/NFPEu8j58/5NUuLjCagxrIF1CysBZz+SEkmtT6Dxcky217gHUYccZXYz\ntd5Y7C1Q4Ng7phtLnle8tangHxS3ak2GKh7zWhIiLz1s3TgBrWmN/QezN5d0\ntmJYyKkd0Ge5oUL0IK1l5FTZluJerXt6jY0OuZbLL8SJCjSPYde6CKhZl9k7\nQRJGdsNVpOiSPAHupMb1CZpN1ryxF7KPJr6xl963KGxyKtvbzJNiu7QYOgqZ\n3pUKyA2sdLf9aOGP1G1COSv+dPTpGi42sSCJcrSlVudt6u52AF5MDiOIxeHm\np/iJ9U+onBWmlZxXwyTo0El6hQsDXN87tG4nVLpzwdGCIokm5SgNdQeKMYxZ\nMYMsTBj1r+/OufRf9HxjB0uLGOvdLE5HAKNhRx+B8pOYOZhNMKRosz0G80CH\niMzfyNENYVZHzN7rGBKKQ+ZjkI2jcVXBtfqWW+vUOL1r8he9TtiaFHE0yOpO\nNVPHhvUYcCOdDMpr3skYzyIDeG5L9eEXvlO2CF9Jmh+JUuXEgP0f/hDP3Jnf\n3W0H\r\n=5Z/B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD91sMVs7o+ZsrihTuYJAlN+9w56yGUes5UkK2+UblghAIgDT69f7ps4NFD4jmeR+BSmY7YWarlDqP54rNBBP7DdX0="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614447450.0_1614448175120_0.03212028023920288"},"_hasShrinkwrap":false},"1.0.2-alpha.1614451045.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614451045.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614451045.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614451045.0","@energyweb/exchange-irec":"1.0.2-alpha.1614451045.0","@energyweb/issuer-api":"0.1.4-alpha.1614451045.0","@energyweb/migrations-irec":"1.0.2-alpha.1614451045.0","@energyweb/origin-backend":"10.0.1-alpha.1614451045.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614451045.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614451045.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614451045.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614451045.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614451045.0","@energyweb/utils-general":"11.0.2-alpha.1614451045.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d58375c74ffc3de71381e7bab7d65b5040340f6d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614451045.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-NIUrhhz1gYZqGvRbVNCQ28R9Vt7F/+y9VVhLcm1kQVXsBKtqOUuoztr28fdHhOJ8TLi+MWGI0vc3OujnDLNUfQ==","shasum":"f3ebf1ebc67b598586b683b18d686e2d09f929ac","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614451045.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOpRpCRA9TVsSAnZWagAApkMP/1Sz+ucruUrWYcJ6Piik\n9Beq8ITeRjknpqrCJUYwJfwIluTo7Z+6eJ+q2bS1fdvcbO/dKImCma6e7QH3\nsInNtopd8xvADNGGGSiyr26y+ESL0UQS6MivpvM+HwdvK3SvYvlwflUFjnpf\nV3mNPs8Yz8zgsY4vhEgMNz+kizvIqgl5E6Fuy6Y5e2cjUnxGsTlOyeJJGH2p\nttgmDXv3twWlZWPskf+cDACz+2Xc9jGHM261M7XdnToDjvFFCZgLo2UJPRUv\nB17Mhqiot30Z6/f9aBCuY/A0NUxe9RQyUElnDSWUy99G7bH1qatSjzotXB5L\n1Ah7iZF7voG4DStIR9r1E89Ftvi8uw54GujXnu9yGOV4fLs8y7BiJ890DOlR\nZyFx2JmZC2PSpqlxrzSB7fAwWsGTg30AOlSj4KTHFlUO1YQk4ejWFuydR83n\naYypiyg1sVi9VxTRm7H1MmGm18FHHYVAUm7ZMQ219GBGss9xxJmv9/IzHVxO\nXhpJCqHyhbRvb/wFDaiMA9INkcYvHJu49IICasnKCxyvmGzPyF+4f7J1R7GU\nzpoOthQPru68zqxr7Huxf/Gxh7kVK9Cw/ohgSqwX1zwCnfdoiHNftQ3Bjqir\nlOPYEO+nkb7Y4W0DkqMs108YRrVCGcIrQHVIb9TS3tgw7WwdVgjp2L+JfRkm\n4psy\r\n=B+Ho\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBBkzvtpEzqow4q7Ry5kzpfyG0HVPzlyI0tsGXTrwWcXAiBqj/MNDKIZUHC3aZ2BR8kwnrJFndvUEO0lTh+P4x0kRQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614451045.0_1614451816728_0.012047880943055977"},"_hasShrinkwrap":false},"1.0.2-alpha.1614456300.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614456300.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614456300.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614456300.0","@energyweb/exchange-irec":"1.0.2-alpha.1614456300.0","@energyweb/issuer-api":"0.1.4-alpha.1614456300.0","@energyweb/migrations-irec":"1.0.2-alpha.1614456300.0","@energyweb/origin-backend":"10.0.1-alpha.1614456300.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614456300.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614456300.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614456300.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614456300.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614456300.0","@energyweb/utils-general":"11.0.2-alpha.1614456300.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"3eb6b5c07f38107288e37c9b4dccf42541a4672a","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614456300.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-5p5b9Lp/8AqgL2/JYCEF0lE1pq/eBGb5Ho4GtfMb981AzMgNLxSnKCmlyEVkhOdbTJfCoO2wilVpZRbZii5siQ==","shasum":"586d67cf504266719f503d54613e5cb1c89e7294","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614456300.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOqi/CRA9TVsSAnZWagAAETIP/1W7HABiILjGNNnZ2Acc\nmZETXPCpdTFqxCj6ap8oJe7Fs7br85dWiwn+7j6UsWtLVODS0EDiOXe3U80C\nRc6S4OerdoVcoNssjFQj67/oMNB2GgpMM2T9NPa1InPN7Pvlbd0eD3Be3Dbn\nDamAP4TnVMq9gH8M1qUwlfybBDsbTVuCsQFXbXsFKp41Tq2OoKRzM+X6uifO\nB00C64k5N6stdngE5dzJ0ygh2/XHJ3C+zLRIJLIdgEnsJRLGoBiiChoKFXXx\nOlzkRFKCiIVLwx76jsIJzLOlxUTEMimf+HVvZSRGEasiMhU6KQOYyG6Oz8FE\nRrSv70jLOwHZp3JV3Tz37kg1WRvWxoll07VkochTG263JU1QBsgAWWLwhSvW\n+RJDh4D+Kywsd0OJJEVwAKdZtP1o4PgDURwNxktUbRN70R14XNF/ge13Ar4J\nkcFFBnAFJZK2AUEa3JZPxXsIMRKE66I6iXkIG0TpBbfK/b0WVZMlmsxVkOzF\n16aVl3tNE899sqjVL7XqA3g/4sywc2tWeG72H9JCL5rHZfzY6PD5J4MPnTsp\n0ikWjt1fM50kWO+vufNtkTtjdTC+vu+Odvx6nqKTehLm0hWUc4FP7/ti0yjA\nAWOS6iiiKfg6YbRNOg/mVfnGr7ftQeBk44+to+OZPBzXc7UHSAU/SwHpbN+N\neS0J\r\n=pADV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG/AQh64sSKh+3q2UikkkMftLQuLf0lMAEqKXylyCDFIAiEA5kHoeODJrqyZVZONkHKUASOm9nAy/+vDIU5+MSJxlX4="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614456300.0_1614457022797_0.13868445504676363"},"_hasShrinkwrap":false},"1.0.2-alpha.1614460846.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614460846.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614460846.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614460846.0","@energyweb/exchange-irec":"1.0.2-alpha.1614460846.0","@energyweb/issuer-api":"0.1.4-alpha.1614460846.0","@energyweb/migrations-irec":"1.0.2-alpha.1614460846.0","@energyweb/origin-backend":"10.0.1-alpha.1614460846.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614460846.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614460846.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614460846.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614460846.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614460846.0","@energyweb/utils-general":"11.0.2-alpha.1614460846.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"29bd258296e2100e5ae4e3c2aa7d54abc4a98fcb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614460846.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-xyBGTdoEYL9JlIB6d40L8a0XzRqJBvl3PlUt3NSHGJV2jK5dDFUYHZ3z+dBiP4xYkm9Za6xdrHV9MkA5gv1zCA==","shasum":"954e038c66a62085b1aaabe1e84f241e6415a669","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614460846.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOrqFCRA9TVsSAnZWagAARtYP/1bnEzJRvJdhcvgLTalN\nhdK4c+b1BTcMcTng4lWGSn0RP5ah6fxiX3aTUwnXYbDs+J8zqQnPneb4qse7\nZNyJZU72BBte31apEVgAMpr4cgL/+KNP6oOLTKSzW0DgP/8xRBkqCIDDYS0Y\ndz2aihxScTi6iXLqDXxqnMh/8AjsIigrDsZeUKqxXv9hKLnNs9LkbewBp4H2\npgeP1JDLe33pOoE1K07Ky3tmUrYSVPucQYYeMlE9XVqEb5lIw62v//snpGw4\nYrPNHYzcG6pewBKbOWKNL0ig1m802jJKOOePF69MCyM64pAWPDJx8tvi/lDt\nM71AjKn4aMYo+hevH+xy+ncyZ8Wjk8yLcqqvN3qHWRUk8HLjYU4HP/XqkT1Z\n2b1GBPB+1GjxCiTC8UsWTqBkvLCdXMOANN1WMHgpOP9oTSHyYp9hBPbQ2HYO\nZcWyyaQkxQjMoK9zGotwjJ7cgUzRCfCCNhi1tBoCBqRaaYD3bNF++Yn2k8IT\nCNAs0wq6Z0dGL0Jky2cXuAc+e35xVk7hbEH4foXlowpgJlYQR2idVp1IXD93\nb2aisfUVNHUCy86HNbbVtRzXgdKtFco+xy5BpqzRdW3xbZfQduPFTDW5a5sX\nfPpvX4F6MDPKtk3UM3Ivxo/BAmRTBQB1pe5K0K4jz6t+YVx5knAkt6MwxLH7\n47VE\r\n=KV8w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEwQLgnFVvX2XR0UER0eQwMGA3nAf+s+8iwrgCMaRr2lAiByRZwh9kbOLlkBwej8XH7Ky2tqFWJ60pm7Rv2d9lO9/w=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614460846.0_1614461572584_0.5824009859059434"},"_hasShrinkwrap":false},"1.0.2-alpha.1614467368.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614467368.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614467368.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614467368.0","@energyweb/exchange-irec":"1.0.2-alpha.1614467368.0","@energyweb/issuer-api":"0.1.4-alpha.1614467368.0","@energyweb/migrations-irec":"1.0.2-alpha.1614467368.0","@energyweb/origin-backend":"10.0.1-alpha.1614467368.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614467368.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614467368.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614467368.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614467368.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614467368.0","@energyweb/utils-general":"11.0.2-alpha.1614467368.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"2140690637c8ef4c060d915aeeb9db685f010196","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614467368.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-uDVx0gvXosQoD5PXXhieWKCWRsEgKZosOtUQ0ipnh92Tp6Qxy91W55c0RSN1R+ePkxhWJ5ikeE8c05GD0JRrJg==","shasum":"75560b7d81e824a8e3b8b5f30b5632ae6e435468","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614467368.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOtOrCRA9TVsSAnZWagAAJOQP/0OI/KHyOlUz6U/nWVIr\nNFaRWFbOdsIFnaEZILCNMO5nZRl1LAKlnI+8IpvBonVqXJYuW7JpZkmzMMqS\n9DgYWmw7rgl2fQkTiIXm2sx0YF0qwQzI5BpIfBmVpMEm1FuXC3lKhy1f9EEu\nrDowHxFySaGu2oU6H142kgJa3thfcWRXMgdLbdPn0e5K0GZdQIRDv/Ur8sbX\n7TjhAC497qc2qVjwKEqjWzRfiJWH0T5wluS/DYRKAMDrM0k3DL3k2uKVxu0X\nQkQdlp3YJIo0YnJLb9wB0oQonYRzmYTH6vA9e9wqfC5gcZaJxoUwDz7a1tbJ\nEZ+Oa1j1n2m+5uUyMtCVkkOHPjE4Jm3LnmOJBoUOr6YU+MkL02vjI5/gAs8m\nm5yvxe/ye1G7e7bOy8EWvHexC9CtH7BYSCUYYpqtDOsU0UX7vHyfmI7C7V+c\ngkLklRhlObwV3YuCohfrhGVXSTZDygW9371fNsQ21uATcRebKE+bgWHg9xCX\nS0s7IDq27vt8ofiDStaXZWbys14BeHEqyY3B9yrir6NwJSAJm/tIbK6F06DR\n+AlE3TYIxn87lyNPHykZFLLecY8otMgleBVa4J1kqUjBU9+628CYG0fganXi\npwzVSTWvEGhZebwig71/E7LovPzR740LZBg9ELIhRCeEYNaIVdQ1DtCVkYyQ\nZ8ko\r\n=CMYj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+GQXmm4A3YcYIW9tRat2eaAJMckXghUoBbRdqk6OVgAiEAuLS3jIePjANtUD0YHp2Kw2rxVnj40qLvCj000KlYhow="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614467368.0_1614468011564_0.2990942849597489"},"_hasShrinkwrap":false},"1.0.2-alpha.1614473654.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614473654.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614473654.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614473654.0","@energyweb/exchange-irec":"1.0.2-alpha.1614473654.0","@energyweb/issuer-api":"0.1.4-alpha.1614473654.0","@energyweb/migrations-irec":"1.0.2-alpha.1614473654.0","@energyweb/origin-backend":"10.0.1-alpha.1614473654.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614473654.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614473654.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614473654.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614473654.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614473654.0","@energyweb/utils-general":"11.0.2-alpha.1614473654.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d6623dd273dfcf5148b346fa8b8187bc20322d9f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614473654.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-OJDv/iyK7qrY32Nz+qPIVvlW4hLj+BDART22ovqaBoj/VSEDFKk1eQM6W48QoawCx9uk1ZO/UQVkWqK2zQXk+Q==","shasum":"54f06d12d4178d3f08e43d9ce82fc9696b7d5cf7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614473654.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOuzLCRA9TVsSAnZWagAAsLMQAIXDQW4IJTQUGYMojnFQ\nX43E2bAk42RMWzs1t/X4sdsGAIY15+c2Xwhhq1PDjMTMRcx0CeQzZHJJlEzJ\njot0cwrNcbVmcmzeYWcCkxX6ruGylKmiQkEW0avM1PXCebyFFvkqNSGmVZ4M\n49br2GyyrDbvxKO5m4Hm4jaTjHIuv2kkXGau43tGy/fFBLmCWGgy1PWXhKfm\nHlgVkyYAgS1aZPx/o9Fbi1kN5DvbtCk3Vczkb7aVFqVStLv5Ri4mhN07nP1+\n84gh8KcAruMYqFbhS0PIHmapd7eJ6ATaiZ16t26eBr28kTCf1/6HkLH6RN6M\nKMFHCykcsxYXRwC9rp1YHkQJuX8vMZJYUD8ohUFsLz7+Gdwb59cJHsD4HtJT\n+ErG+4oouWkaCR+Ie+eLi0hMUGgTWt10pV92G4MdVPcJZagLIDBPAQ/WTyNx\nWKdtw+URNL/r+wCdWI/b+jhGtCRrVOoqizbqxt2KqsqfKF9f9kKhr+EPyeM3\nfCssCzAqP3rJ/n3lMsbM3mrLtphb+6xyanH1/Ea7LLLGaLBO6cduAo8QBGmi\nwZnUZog7kgzDAIAvDv4oO2nZuxvWChJ8+3mBCab4TLZPbMWNQS0anKRnDhwY\newavzH28OZeagXnAUogZrPpM2DyPikppdKEM82GXcpkq1wwRxcAl1C74cEcI\nWhJg\r\n=8jX9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9XE6J250gs7O9B67acc6W0vu1su29pfKmJ6S307WiHAiEAjj3ETVCxT/NFfmUMyi7hz1VAvvDNSTrdeqDrX0COaCE="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614473654.0_1614474443274_0.37898310239466015"},"_hasShrinkwrap":false},"1.0.2-alpha.1614480351.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614480351.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614480351.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614480351.0","@energyweb/exchange-irec":"1.0.2-alpha.1614480351.0","@energyweb/issuer-api":"0.1.4-alpha.1614480351.0","@energyweb/migrations-irec":"1.0.2-alpha.1614480351.0","@energyweb/origin-backend":"10.0.1-alpha.1614480351.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614480351.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614480351.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614480351.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614480351.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614480351.0","@energyweb/utils-general":"11.0.2-alpha.1614480351.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a0e150625b20ce7ec991da2ebfc2af3543155e28","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614480351.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-MYhv2hXQEj82xm1m1aCSOkBy+xiQ86qZP7/cjrCtvZnwVJcvjjVsErbeSEtQx5fHUTvJMz1zzoBDxUJd0wyJIQ==","shasum":"dba99988d1e2dc00efae38f7a208692d8d8d5d4e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614480351.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOwadCRA9TVsSAnZWagAAHqEP/RxsGkk2736FMUVCO2w7\nxV9qciZoJj5s4d4U6ELj1Ng6ra6LUO4JpLUgw36ozt+TaJ1Zq6009KofQEuc\nyZCrdUWh6jnPHY7FW3zY2lBCG/mePTRnASwW1RlVp8t2VwOT1EbhYjTyg+Ut\n2IS8RWOFM8uNWyyoN+PinxN5ygFoEcSgNkFExDv9UgxPh1R+3eK+oIuGRvpL\nvzMcZhSzR5p4drGeCVFcfkk+nE1NTsLf+oOm0YwLmNyKAI49LlGfQFFAQw2k\nX3JAX8/IKvGdv9NVdgcB1MKYiI/8w+vemW7Ls5XXadejt3+Md6qow2eqK5nq\n25euAfQlnYnIY/RRne3rswpNlvS2R1chijd8eUPsk6ovehiNWRIY8BUd0xnJ\nP/9JyFJHAtpVji+rkDhgsRSbSt59JkvdrM2vVdjz45rDQ0PUF4S90TDtjKiT\n4eUAriMk8CZimoKzZeix+pO87tOPWd0jCcQ92PEKU1j+NPYTHzFzQfrflV4p\n+TI1S87q/ytq3r5WZsB4de/La1Ef8x8JZY+QWXyYFRtKgu456juyvjhHiPob\nCqbDqsLubsDXBHwwaGjga/Jm4Fdc4eqWdCT5xk1LwWL7VPswxKNiYNPhbp4m\nSmlIysJPU8S0G4DlcRQkQrXMTf8MEDg2wYtqzwVpG08lmUQRUVzmyX+hNoIA\nWsE1\r\n=pRHV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjcwx2eCkhp/M8cC1lEhJDgP2jREpBjU+ed+zyf0i79AIgPE3Lnw1l/RZj5DsjBI7DYBC9DNuncmkE2edUe3NVgyE="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614480351.0_1614481053080_0.9351914637167813"},"_hasShrinkwrap":false},"1.0.2-alpha.1614484730.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614484730.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614484730.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614484730.0","@energyweb/exchange-irec":"1.0.2-alpha.1614484730.0","@energyweb/issuer-api":"0.1.4-alpha.1614484730.0","@energyweb/migrations-irec":"1.0.2-alpha.1614484730.0","@energyweb/origin-backend":"10.0.1-alpha.1614484730.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614484730.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614484730.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614484730.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614484730.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614484730.0","@energyweb/utils-general":"11.0.2-alpha.1614484730.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"8cbb567986449af7be85aab7fde3ea0eff6d3490","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614484730.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-XPAIzyxeKAzdG7l1CConiZ0qwm8+vySb8n7UV8HtwHeMRgxh0MSa8Wmex6bZTeHG9RXcqKCaNc+k+iwXb20PKA==","shasum":"7f56161718a0e7bdbad4fc19c6e3d7e93ebdda62","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614484730.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOxeiCRA9TVsSAnZWagAAgxIP/3WjMwFi+QUze0WSv2ns\nM0nvSlDQ++YBk0sk3eSH+tHe+bFWGqI+blY+4Kltf79HZTQkGWwyOjVHF0HN\ngBQQHFriT9DGvBVi6hXutNm4EwjiLpV+gxjOMpjg75iLwOG/ggP5uMM5I2ix\nFLEUs8Lsyoi6zAXYAl0dxv15Hw6fXMZhu7yX0OnAb6zfuoxGFuAtu6kg8HV6\n/y+iN/c98Tz92R3+5y6RaOwVh2fswgm1ByGwmwvqu6WH/twOsifrHdknO3j9\nkW41AjerkTXAMu2o3tdN2tTZv/vETctM2Xs+7LQHExnVM4s22ZKEuFhj13V6\nFWq8k/y93kKAoT98/0i7F/HIJ/aK1P4uQV4OHwz8eYWbDa1TvpL/FxidD9OJ\nPXG+MGKeOhneWdJl/BIwR97kjWttI+NE+Ck79Oix805G7utaguLLUb1CK8eC\n5kz5MoOP9w5fTg9aECge2mFZ97zMabAHaH3kEwL6bv75X6Bc9zuhplfLEKtM\nbVAGl3q4RZbFNrSmuxVkRrfDg38hdEPH4QoAzMfDEt2fTiGi21e1H5Yvwa3M\nzNe35mW40kGEKywnt7PRjsS21MQGCfhLa+PIR2DgJlW/wptBAoHYCkPkO++z\nFC4Cbzc84Ioz7DWYe0ybJV2rPfWuCX/6685guHfTCT0rCcFsNfJ8T2ZMq22n\nuA7p\r\n=0z+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBSpnnFl0c6+qvgh6sie5MMD3gA/8MbUasWWJDlC/B8AiAvZtWoCNtThYjPeyQlKXXH+tPpJo4kDE2L1b7/OGNebw=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614484730.0_1614485410130_0.36879870730890474"},"_hasShrinkwrap":false},"1.0.2-alpha.1614505253.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614505253.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614505253.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614505253.0","@energyweb/exchange-irec":"1.0.2-alpha.1614505253.0","@energyweb/issuer-api":"0.1.4-alpha.1614505253.0","@energyweb/migrations-irec":"1.0.2-alpha.1614505253.0","@energyweb/origin-backend":"10.0.1-alpha.1614505253.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614505253.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614505253.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614505253.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614505253.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614505253.0","@energyweb/utils-general":"11.0.2-alpha.1614505253.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"afc190c37f964265f698b3abb3faf405b35ded15","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614505253.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-2xLEvGnHWWhrz/afCRK2NvJt+DZERaU6EuVQ8GHQ8LGnC6m1gIXq89UpeyFoJ7LsifduaJ4xP1iDkUjivzYAjw==","shasum":"47fff3ceac2301c70205f45611c78ffab3e9c82e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614505253.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgO2hbCRA9TVsSAnZWagAAjtcP/i0boMrJb460hEhkZ42C\nYtKUPrC3yx+EOvGF4PcOsJA5NvG9QKlTRimHTvrFaQCrO/VirXHb5SkCeZEl\n/n/7a0gnF1av2NWj12Plrj3J+ozOEXET0lU3A3VAb0/bwx21OVHVI3IS/ma/\nfqdo/guW/zen4kPjYE7j69ZcMFDNlwoVCJPKxMNK9al8obFG9oWzF8cDRUcJ\n0HRsEryzInKXQ5BXhWeLJMHR1957TZk7VPaYw6eY3maIsoC9KMzpIXlUItsZ\nSmrjP1BNfnIniqDRjqu3oMrC8o/ykbKcGulxnXuSGykoHKPa+JEi1pTA2SHz\nozKOw3HT1HY0CBQIaOZ/MYzq6kfDdP+O6UShNZbojEdPK+lmIAIeMoHqtJZu\njLO1eDovEQhSNt5mqIjPYegBm4E+6A/ElR8hvXtJF7/tUFYDrZ/BhXaVvKdy\nqHsYOvCEoNNlEhXh+SkKVZD4PmuSxiKDKTTVD55Vo6Ed9fUHw5qPFuk5kKli\np8mKWMP+17fze53DoFf+SeeQEr+3fycybbQi+sD9A12NqhSO/cuoHX7eXrLI\nqKGZVwc6HaG3xkrt3r01eszkwrQe7XhuZPvSa1+yoBzEur8xBebu+ssuxXZY\nQoAVwEOXssJqkIhKsTjFjf+eMvJ39fWWVG41C/VtkuvDN38mm/sI5U+2vpeV\nG0g1\r\n=jdDR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsTDcpMzxWRRiQKWA67029bhOJ9CJyhAeO9gZ9iLX8ZQIhAIl+leDbWaa41u5LDxEZL4fSWBuURUQn+2znTR9xxmE2"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614505253.0_1614506074900_0.7375940005804309"},"_hasShrinkwrap":false},"1.0.2-alpha.1614586578.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614586578.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614586578.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614586578.0","@energyweb/exchange-irec":"1.0.2-alpha.1614586578.0","@energyweb/issuer-api":"0.1.4-alpha.1614586578.0","@energyweb/migrations-irec":"1.0.2-alpha.1614586578.0","@energyweb/origin-backend":"10.0.1-alpha.1614586578.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614586578.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614586578.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614586578.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614586578.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614586578.0","@energyweb/utils-general":"11.0.2-alpha.1614586578.0","@nestjs-modules/mailer":"1.4.2","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"3d53f7ebbcd640c61d146b59a82f21e6677937ed","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614586578.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-n/LgMc1ujeUAWSSE1tkPVyU9jbduAwpuB53dZAO/7e8GBKdwgmiiXjfo7YT1EjPvg1lcJDa8cxasSI1s3hYeuw==","shasum":"bc08ba1adc811370b46f79622abb5da83ebb1496","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614586578.0.tgz","fileCount":78,"unpackedSize":1522184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPKZYCRA9TVsSAnZWagAAu2AQAIx3yEVCc7mBpev9v0Wb\naMPkOKack2xOGO/4oLWtGaxoFDjC9vwWiXI/ZTFBdSQjxz+gDfZbKkwizURa\n4txGJISJ6g6O5DKigMjl/0maqXBfvAKAhEmpSvi3gtrDSxtLsRVXHWYxkE6P\nfPC4zY9VzoOuQYWsaPUnqggN+jxzTNIxGIO10c58DWiQBiDTqSxrzBu33KZo\niIfooCynb3kmjtopMa4FpKK6ZqfraMrwdz5OtWI/kaQs7ahd9j+2fjpIAQWH\nMN6Sw8rdE1UqKVIRtbPolZFUHNwkMfT3hLnEILkIDVJpYVHA2xwWm6uNycO6\nolMn/o+rlyv67gIWa7vkXSCb9psOqAo7/RXFA+ugLOAVLw9mLAf0PP5RPP5c\ndRNGhX++F/UFgknV61oKtZbllmh5wbqQu4mClxu0mXJJVXwiY/XBWzXNYXLz\nc8N2+tEZrP8dFOlM+NiusfCj2z/Bs0cS6yHNhbIzxqNGecwOkaecx/8CBYQl\nAswwzMXZTqhOPNbbVC3AGZq0lWxaI8Sg64ch93W3t7i0PzBLbK4/o9/kAhtk\nx3SilzRiE2Cun3gE+zgXxzPcYr0vd47LlhEOTR55KH8Tr5t0xtMYeFOfZRQp\nTNFaMSEpRdNK+SEbh/qyB/b4fmd4WBO9SSyx9N+BK1nZSa2Twrs+TvMLAN6X\njdBR\r\n=ePNw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDclBBXSP4vOVUlgix1tLd91Itqzy9qxaXGJEK1NrXsgQIhANvCPfAw6IGOvB9gNQ1JBtutRL1WFW/8NvK/pB4zTVjF"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614586578.0_1614587480357_0.04690678682183114"},"_hasShrinkwrap":false},"1.0.2-alpha.1614678496.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614678496.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614678496.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614678496.0","@energyweb/exchange-irec":"1.0.2-alpha.1614678496.0","@energyweb/issuer-api":"0.1.4-alpha.1614678496.0","@energyweb/migrations-irec":"1.0.2-alpha.1614678496.0","@energyweb/origin-backend":"10.0.1-alpha.1614678496.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614678496.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614678496.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614678496.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614678496.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614678496.0","@energyweb/utils-general":"11.0.2-alpha.1614678496.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"68950c7db3b52198673b6a8e6159fc46565b60a9","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614678496.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-WPJRkhakVRrdde2+qFr1bNe4Ik1Qt23l4lZ9cKowpcIRJ3ZxFyE9UhwEdQ8AjmAZoijIvbBzDUe/tmXaclHAzg==","shasum":"a210678ba7ba4447551f68f694bac76c683ef5aa","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614678496.0.tgz","fileCount":78,"unpackedSize":1521061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPg0SCRA9TVsSAnZWagAAcHoP/Rd1BDdEGq+D2ABwPJZp\nCAxuXDIgc2EhK7uKrPVvG8/2htq/yealTO3Yj/4XL3XtZA4cq4PnbNA30WSB\nPAxRyREpX/uuapXhUGfA9/JI+qw4Q1EqIj3VZ2ThdZ6xIxkqwJIlG2oZ1wev\nc+S89KKawRUcKIIsoPez9Rm3x30CCq0EpBE+RXSNbIm/yIr3Ln7/0Y1RTWtB\nMnMtx3+AB8bKouIjv1IOE3rJDhWP6MNyAAYrjcw6x+gPXc4v/E3jGmsCSSm2\nbBaXrG/OYycjjxjEO/+ojKPnSsM3GAAlseeQDT40iFZDliuuHQFIYcMzsvqv\npHysk8BZeUdHDf1IVabqHEspZitSiprHczuULbTO+3Qvpvh/lqVMUaY64/jF\nT5xj139N7lZhtUCf8vaWU60nV4xg8M6EX9a1WA3PHmdNZM/Jh2PhCFJyaxpy\n4LtakrCaVOCa3pPNN7a12sqfQV7RTfnnqGgRkriyyUzcPWpGrq+fBO99riae\nncHl0w3nLewLh4m7fRrYtqmKB7pFOxPfIKLEzQI2akMeDcJnu8Azb4GQBing\nZq0hDAMTu8s2t8yANulqNoAvCN7evM2bOWiIbkM/PGEy2HxpGg+iv4DEV/PO\nr10AFVmCDjDHU1D7vM/xBcyH7fQ2L4E+42ElQESEpYtaQxdVuUd+Zr7qasYV\nT4wg\r\n=kFVu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICCfV7qRYTsbnUVRw+ecyQ0cvCXcw5vjATe1kmAcuQTcAiBqM29UuPbxZra2psVTgFLCE4BUSe1ENYjVw1uwbUkkPw=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614678496.0_1614679314036_0.7064739630704131"},"_hasShrinkwrap":false},"1.0.2-alpha.1614696513.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614696513.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614696513.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614696513.0","@energyweb/exchange-irec":"1.0.2-alpha.1614696513.0","@energyweb/issuer-api":"0.1.4-alpha.1614696513.0","@energyweb/migrations-irec":"1.0.2-alpha.1614696513.0","@energyweb/origin-backend":"10.0.1-alpha.1614696513.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614696513.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614696513.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614696513.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614696513.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614696513.0","@energyweb/utils-general":"11.0.2-alpha.1614696513.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"7ce49d7f93dccb6bf15ceee9be66b52a37d80f1d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614696513.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-BkhuXEAG3U15owpZuTX8clWz0Dmwk3J3o++ykm3evzVUbIBq1eLXmhTa579JlqAk12Y54DbROj0Gnks0xkGx1g==","shasum":"03e74e40740f89e53137c295ded44f7ee4d5377e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614696513.0.tgz","fileCount":78,"unpackedSize":1521061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPlP9CRA9TVsSAnZWagAArUUP/38wJv1rrzrdNuBZIY2w\n4K+xLVZOQeMaQkaatoD1t110cIS3e9VW5uUKSrYdG7+fzT7boeblv7u8wn+g\nHlHUiUURf3ik1S098Fi/C7pl48p/0w5C/ttrrw2ehjBH6+xA85byBGtSUyu5\n5aGDUAOzyiBrIyldra84x4JxCc04PWmscfoNHkdpV681vy1ZYgUB2fU1fwYv\nPX1B6WQpIRXNi930SazcontqZcQldrvKYRi5QDkYsW/1steilARjLlrn66aJ\nbvzYrtfVxRvZCt0PHnUyxbFgUBWdIoFIpCVl5HfYkwDSBSgoydbz9dAwJw0H\nbQQa5ConxF8gAi1VYywik2caW3RhBOf3iBnYWjX/NZSNexLBwL1pVnBmKjvY\npDSIz5x3m+yppVDNwQC4zLBubrjYVwh79POSg6ZNQxUTuRBQntIySwOYrQls\nEr4i7kahby8m11v22Ob2jI9DJrWumcsAMRHCwMaAqBL+5u/vJq7FwLAPaZZU\nWu8mxqYy1B6106ZXjKAA5EKkHAt+1V9KatpKklWET2eS5dDZjZBF+pIcsrt5\nSmMP5rer1N1r1u18T18BtkvbnbZ4RFF2YjmLZGHhV6AU4E4QFikYMvkvvOaI\ng/IgxLGv5hXVk+hLyUhqJvct93tL7pSkWXclA08vwekvxhMcmg1NWQ07EqJp\nk1EG\r\n=Ggas\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfgiD0b0BwaViRw+nUC2xayVlcSxtvLzo3TrHKSCGosAiEA622TPu5LldD+e9aodeaVsnXIvbFLvYMV7Yep+3VEjys="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614696513.0_1614697468852_0.34414835605262906"},"_hasShrinkwrap":false},"1.0.2-alpha.1614754787.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614754787.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614754787.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614754787.0","@energyweb/exchange-irec":"1.0.2-alpha.1614754787.0","@energyweb/issuer-api":"0.1.4-alpha.1614754787.0","@energyweb/migrations-irec":"1.0.2-alpha.1614754787.0","@energyweb/origin-backend":"10.0.1-alpha.1614754787.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614754787.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614754787.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614754787.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614754787.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614754787.0","@energyweb/utils-general":"11.0.2-alpha.1614754787.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"eab92c13a4f5992c4c9230912ccb8f156f41554c","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614754787.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-YTrZlr93sVpiO3LSMFzOikfMv/uS9bjDwUV0OIDnsEuCdrpS0L+SR1rxkXMiW1eFWAkzkr+cITxWDM1vT/3Ahw==","shasum":"5869487a99d8136725307db3dd88f8ac8ca2555d","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614754787.0.tgz","fileCount":78,"unpackedSize":1523181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPzdSCRA9TVsSAnZWagAABN0P/3kseceG/t2m8l1jf+me\ncmRt4drnA7EI2PDoCJKHTw9DGD96mIw613my+7Z2+33m60HXTV2InI7Lo2M5\nL4LjDlAE+nA5Pmkdlgv8YOlydfGwhWbqr4so9k0shobjuXU2NeZXAgxP6jjU\nhNxK79BknYh40YXjh5rU2SRd7inGGH5RGOt14Dl/ahahFa+EoUIil8xHmOnj\njkc5SQOwOimO8iL8KPxDu1qGa1c0I0A7Re5ZH3neIavgdALwpSiytzNAFNFN\ng4vk/8Bjr1KWSPv0FGNxRjl/b5Cexwfp7mqxlAgBrFahrVSFntXLSlCmfAty\nlxB904Al9NHYBawMnDoWD9LlPKiVWKywKwPYKo+LWKPLpjUWP7UQk0RddlyL\nN80gd/NIYz4WZkOhWeShMijNfBgnEWSg1sMFm1bCNcLouxlS0Jig4NBtV77A\nhSTJRKmdTJpUHhZQskf8qlM6MCLgeMX3a8DMLuiQGYzgrd5a3qjF18vknjZr\nacZWiP/5gTmemH0dwggVfQODjgzmio+0hTijFB18CxrfbhXLb2qSVJFkQDrJ\n4XpIXvC3QcJQ6QZC6tFI6B7nBFuZ4mNSSS3yEhG4lYWSc0Tbc7/eH+3CDGr+\n/0zu7T5i5xEVPNsrdqvG7yMxcO55mjTOasPnZTrHRUP9db1xbL3cQh2cTWuH\nXTJ8\r\n=QwH2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICQYAEFDZ0MxqSC+JMKb96k8JkE504Fmu+OnxBEvgUFHAiAVQVFXF4yqjmFjlAsGPvweYzu1AsBSwmzJDI+lqIKX0g=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614754787.0_1614755665993_0.13566973031730045"},"_hasShrinkwrap":false},"1.0.2-alpha.1614762960.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614762960.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614762960.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614762960.0","@energyweb/exchange-irec":"1.0.2-alpha.1614762960.0","@energyweb/issuer-api":"0.1.4-alpha.1614762960.0","@energyweb/migrations-irec":"1.0.2-alpha.1614762960.0","@energyweb/origin-backend":"10.0.1-alpha.1614762960.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614762960.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614762960.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614762960.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614762960.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614762960.0","@energyweb/utils-general":"11.0.2-alpha.1614762960.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6f8cd1b098d24cd4d38cf4bd215b5b0d2b3e1d82","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614762960.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-UWp/hIxlgicBI6DdaA8JbhonmAlL6U/0Usod2z6a63OTO929xSP1t6JXUW8p1UVVQRj4iu4vK0zYDZ4eyOljpw==","shasum":"4f0e071221134d95cb76fdf2678524d20a495ab7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614762960.0.tgz","fileCount":78,"unpackedSize":1523181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP1bfCRA9TVsSAnZWagAAwRQP/1tQil96WUjGW4UsCYB1\nMtMLz6Ep9C6tmwWgHcC48m/+ZYC9ddwSuvGJkjyPxuAipUFCfVT5Z1UMvpEm\nf8S6YkQYfsUQKpb9uasB94a6/xv/YPzWy/NHngX7m1kiJ9HgN3DdgAUscB5X\nWVyQPsHYQC+AIN3ffEtruTN2Nj+guNOWN+76LR7u8hqi6Jp81Vz2lKKlJLcC\n7W2Y78cwl+8ZFEkOeZrr50vAFIrUpwkvXVbASP4wlFZMsBAXE7bSry8GwmtU\nD7dVu4WvbV3TD/QwNi7xYU+D41hg4vRjkdxkCskybVuAEnn6/Tjbkf/GQPZZ\nBN7VJ41dWhCXA3x2XWff4zA9pgSVijC8In2iLywtvGIwRbf4ZKD/vp6DZfwf\nmml1Ehv8mA6XTA5anNFyAMzWV7B8U7AybAMwtnxKu860uWqVbHkjXSuZQ4fl\nMiz6PcHf2rSC/IIHYSxCMOiW4owsFWRBy9JNoZwBOUftcBO+y5iF7jOrnkeK\nEAE8K3p6ywf5tf/PCgiZ6NsyauGksfOvQ5jw/tlxPEgTrxDGmh5qQiuCpBE8\nhg4WDliSx+w5YlKpYozZWEzxoOmuFaYHKc3a/Y19+iP2o/5c8iSZTCgaKcvy\nGchKCP0QSJTSwTYrVaFUSqlG+3e1V5IpRx3aj4Svugzi8MZqhdT62DHee0fI\nFXKx\r\n=kEil\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGPMO/RsUtcxgolJxraaPv+V/W5k7XHXke8t28YfS2AgIgTV0jii9d4GrwfXP+NljSQhPa+ZKjxAq37Ym74dHIWkU="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614762960.0_1614763743126_0.00456984651041159"},"_hasShrinkwrap":false},"1.0.2-alpha.1614769373.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614769373.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614769373.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614769373.0","@energyweb/exchange-irec":"1.0.2-alpha.1614769373.0","@energyweb/issuer-api":"0.1.4-alpha.1614769373.0","@energyweb/migrations-irec":"1.0.2-alpha.1614769373.0","@energyweb/origin-backend":"10.0.1-alpha.1614769373.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614769373.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614769373.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614769373.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614769373.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614769373.0","@energyweb/utils-general":"11.0.2-alpha.1614769373.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6b63b77df0e873382e18678e09420d077fb0585c","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614769373.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-Kcqr0wrpER8JTk8SVHKBt0iQu9YiIzRz6dWpTcfqn0FG7nJ1EIT8K/qCcy0GtQ56cvH/mhssOiYP2IGUmswZwg==","shasum":"970ecf5bca962f31bbd0b278ac84709f0e35801a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614769373.0.tgz","fileCount":78,"unpackedSize":1544635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP3AoCRA9TVsSAnZWagAARpkQAKLxrmonM3hFNlYrcUNp\n9FM9Wc3c6pp+FSoikElU5b81opdtEdI3N2H11+8pdvIMAd2gdoid/aDUZfrn\n8BCZ40hbDBMIcuILFgnLHYftZEQk7d4AesBxoMuafIrFBBE9GfdzLd5GyrGG\nhDAdV4qFmIJqOAJuZZAj5mNoqgIGU22PTm3AosqcuVpUoLaAoFFut5UR6xl6\nvR+t4oaYwqIepNcPe74Yah3xU9Ih4iK0SJF8Lx0XJAkNg/BYfOpoeUe/XrVe\nuHgyH0DXb5HXdE7cGNDkKQI1wBY+ibXbf3P17QOX0XzHmFE/kzOOTG5cytPP\nhbnM2JDlUxbcE/wAxUWoVdm3s/jyO+NrydR2lHWT/06dNDMxxyaLACX2vmGE\nBVeH8BoIUw1S5tSkge430GMYKyqihTvCIm0o8gqlbeBVDOOa+Y0X1FGH23Uk\nv7THKVTk/+bxD3qt591SIuUctlRWkA2VcqCzJJpYH3TZGy2KUuxWMjU633RT\njgC13pDfCcNr6C5IHtU/yMaJHE/ekQ4bZ6bM2Wp0Bcl0IntIq8HD/95oCP2M\n/CJvy+3HJExweFLI6L/bSPzjH8ZtpkWhFLdJijIVWIuY02ioi9zvHLiasPE4\nI9Dms+y+wJ1qYQXEa2XYHQMX/Er5kjKEh+MSjHNUR/ECdwVEznOpF/h/sgzC\nePpv\r\n=gb2p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRfXH08v+e48i0XrmroBvzt1rxoM/AzYOTZHLAC/rbeAiEAoriUJvBu3Tgdm8W2p8Y2H70va0j8ApHXk5Lhyu3T5Y4="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614769373.0_1614770215671_0.8380964060505178"},"_hasShrinkwrap":false},"1.0.2-alpha.1614796457.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614796457.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614796457.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614796457.0","@energyweb/exchange-irec":"1.0.2-alpha.1614796457.0","@energyweb/issuer-api":"0.1.4-alpha.1614796457.0","@energyweb/migrations-irec":"1.0.2-alpha.1614796457.0","@energyweb/origin-backend":"10.0.1-alpha.1614796457.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614796457.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614796457.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614796457.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614796457.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614796457.0","@energyweb/utils-general":"11.0.2-alpha.1614796457.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6c969b076cce511456159c5f6912f844d9ae0e5e","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614796457.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-SRnqrFBOw5hx13b5SpCbdTtR/KZvexbt4nyiB4a2+l2x4ZjmqYv3CXvEkcUdiZKIOpsE+vVOSP0vgZoT/cvBCQ==","shasum":"7a652398b8fdcb548962561056dfd4c9bafd7270","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614796457.0.tgz","fileCount":78,"unpackedSize":1544635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP9pNCRA9TVsSAnZWagAAc+sP/j+4XfW6UyLFhSENQNdC\nh9inTVy73wyNwahd1/2XY8ejRB7Jg7Fo5CdvXmqEYrXpcZC6g1IDjayZeVPV\nfLpMNREpp4UH5VjbElUTIJ91UFer5BLI4A0qNJqfSjUulONgxT5EJA2IfF6i\ndjTG+wirzLVQdkx6uI6GKvYJnnIERYaCUohRuh1N8lNjTw1sqgZBpEI+N5Bm\nUCa4G5N9GUESQfwBjubNHGL/rXavynOEfuuxUkgta90nnWs2jjIOHndG1FTF\nt57UEWetjXWuPfURrWBB3liQpIfqEzSOdr9O1PXCdOHiV3PBGMaF2DmAxDdD\niQKkejZT6kBYhwrdxam5HbUayq1rSYc6H7U92US89O2KEI6T3p22Vb42tlyf\nh1G3F6P8kGY98GZQLKmDZI/rHXAtaH2PPX2LO3hUBdtZai3fWWoKfe5zgyTY\nwFE+8TFr5xeNWrNdoy72MVP3NsDTfdiXtPVlizZEGsKmEAIiK4VoEJ+6+a+y\n3b/U2/uEJD8L+3tRcRX+Xfhnw/erQX23FP2l+Ww2EbngzT5Oyfzg5xktQn7V\nH6wUFDHWak44Ev7Ydp3FwI6Vgm1XzxH+ltU+JZY/TWsrqAZH9L1CEgwufAeP\nOEikvLOq40Kx11sMAG8SKkh/rzVcIrrTiJikohrdO31H+2sJGeB8WVs46LnU\nS3Dc\r\n=E2w4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPM1oOCeo8oEbGLoMGx8WwXFheaJlBUecK0XeY+x9CzQIhAJelLeHNRyg8D3S8Pu1PHp84hGUQDs2wMJZKIQFY9i4U"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614796457.0_1614797389070_0.2522495383219425"},"_hasShrinkwrap":false},"1.0.2-alpha.1614807180.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614807180.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614807180.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614807180.0","@energyweb/exchange-irec":"1.0.2-alpha.1614807180.0","@energyweb/issuer-api":"0.1.4-alpha.1614807180.0","@energyweb/migrations-irec":"1.0.2-alpha.1614807180.0","@energyweb/origin-backend":"10.0.1-alpha.1614807180.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614807180.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614807180.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614807180.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614807180.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614807180.0","@energyweb/utils-general":"11.0.2-alpha.1614807180.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"90e183613ce590bef6daddd0db603a9f4a573470","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614807180.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-uufi7mIIzWCQcNZbvVMeY4lOpEehE9nNVY+vm3prTrHEA+LMG526mIocTHOLnv5lAwJYKsO40K8yxQlN9d4cAg==","shasum":"fa358cd0453149abc918b32f784ae1258b432c36","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614807180.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQAQKCRA9TVsSAnZWagAA1nIP/iCUDRnXJYFrntoEepYp\nd1E5uwT5kHbMshYRjIm7R/pHtltA0BmBYuXSrGF1/LIbn2LUW1CtgsbgZcFZ\nEtEVD7WgO4Zeu4gbL5mQgSgzKF7ygYYV7jkLuCuSCkGnaQQyEytyKzjnzwdM\n0PQGBho75oiniK6bNwtNvYV2o0qCPKHFXKy+9xME0yKvHBZH4gY1+ziN4AVv\nq1RkWvSYdLWwSiA/ImWtnOpXcXPVVFFsu+jr3obhJEKcxa8TiLLfmsv7rOnn\nhWp4dtiMuwEjqm6weZVNYv7KPAsJdfjLX5USLanmdssLhPn2TbrDLrZNx6GS\nkj5W0Qn7UfOEHGHmxVL2PYol+ubx2aJhsHPk4EpAZNCPzsydG+0/0ENzv/40\nPXsOYazRikVjlIo4lPxHNFZAU+GmtUqWUKHEYsCc6hBdfkJjEgFnbzjmThQ8\nLO6Yw6oqQZZF0pVC4jUTlJml+EM6RpIcYonRvMZAIUjm3E5HyNEb7Esk4A32\nKBGnjrDOfz6j/mcq8ZI5yjPvWaYtlxqViD8AZSvZoULNlWag9KlPY4kGjNMc\nCIoYGTMhxWtAZsLcR4AMZz62Xlar8Gd3aVn8wRljqR/ihEYwqC6BvKbk7d15\nQ92yAC+/7iAtl90UzRVxoXInqEvqqp10Qe2XFzxG5/m1HGm8iBHX7X1KQ9s5\np1od\r\n=g+gw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuaEEeUwyMQ2cXNF6up+mIrtYkpjqgBVPtAjG7TQFiQAIgE1Z5D2DR9s6r7hlsw0y6AojIkvtgQtxUPwgMd/VsqZY="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614807180.0_1614808073865_0.7408828150486944"},"_hasShrinkwrap":false},"1.0.2-alpha.1614846632.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614846632.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614846632.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614846632.0","@energyweb/exchange-irec":"1.0.2-alpha.1614846632.0","@energyweb/issuer-api":"0.1.4-alpha.1614846632.0","@energyweb/migrations-irec":"1.0.2-alpha.1614846632.0","@energyweb/origin-backend":"10.0.1-alpha.1614846632.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614846632.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614846632.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614846632.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614846632.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614846632.0","@energyweb/utils-general":"11.0.2-alpha.1614846632.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"57c2bb598a67431c2451706e60460bee16814fc2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614846632.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-vxkq4YGWTRBY7fF+WWw/jHORuqxLhNiFZGuX/bD/rkgK+wyYZ++6F6fP/QSMWUyYSrbT3mGfeklnMtFxRUl/2w==","shasum":"a98d0b5054c715963e95bc44d7cc08c56d87f881","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614846632.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQJ22CRA9TVsSAnZWagAAhMQQAKHLKs46aFsO324heO30\n42F/N92ukhBDafKeJUsrxUWAbznvcp/4L74zLh3is0soODmtY2+fJKBaZBq7\nFZ2fMnj8KbIA0O+hJJ5Lp+XlReZgiXZTzXOssl1yRkxdKAfsfhb4MYtMQh0J\nbWOwMbDFWb0rwGIf//vba5xNu4XglxHM7d/tdJwb9/IWe4z6gGh8WEVc4eIN\nNZlPXouljxiwLWZi9qxoIZSmzNeHrEtjSiu5uhB5qsXeN5bAiNxPmgi0D6Eo\nfuqmPxSIa5OS1VDu+3syefOJYRFWScQnI5wIaQT2GPFw/Erwniqk7q9yJv+N\nm+vEQjuex/ulgXO5f6WUDWhf1kmO8JcaNWXYndYVpZTaE7FOMdKPFWxy9gEl\n12VZ2DZu8YI3p/bTuurjTxfz3EoQycJfrJ/Hk9lkp1aU6S4KhISh660jOd4X\nwUtWEFhJWg5SJY0IPMZPrGJNhaRLnEubCa/2GAMy5EZZpp5LEO1Y50LhgXjX\nKjPvOkTb1xYbdPTc87X4TaQhqk80GX0p1wisdXJ7laF61n/cIuG1lZxPUqEn\n7f+VwHdEfjq0Nyycz5AfxD1WwGJlSuYxOngkQyu7PQcs++XbX723Ik1CoWiB\nasNL4yGJqZ8SHcCur6AUGSBvryZGod+/f+nDMNNp9EtxfJzEJ4lkoHdE/tn6\nulhs\r\n=5K9R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxab1DwzgoR87JWpV+bq41tHuA0Q/PNqsxtFkyoHqgiAiEAzCIXgRC+EorUT5N/aU+Nkps/qV/osPcjv9yikCVe1eE="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614846632.0_1614847414140_0.044181591204546455"},"_hasShrinkwrap":false},"1.0.2-alpha.1614853934.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614853934.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614853934.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614853934.0","@energyweb/exchange-irec":"1.0.2-alpha.1614853934.0","@energyweb/issuer-api":"0.1.4-alpha.1614853934.0","@energyweb/migrations-irec":"1.0.2-alpha.1614853934.0","@energyweb/origin-backend":"10.0.1-alpha.1614853934.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614853934.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614853934.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614853934.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614853934.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614853934.0","@energyweb/utils-general":"11.0.2-alpha.1614853934.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a3e3419e74514c19bf2451662fdc605c7ba0df59","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614853934.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (linux)","dist":{"integrity":"sha512-wPD4LoSjE7tIC4mrEorean9jREj2HEWqvUeb8UtfRuINPJewmo09YvswHdahYLLh+PZMxk47HUMxQHfhZwgnow==","shasum":"83772189302c36884f6c907e08d26143c69d068a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614853934.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQLqNCRA9TVsSAnZWagAA/D8P+wTOl8+ApVTpE7hgwsK9\n9pCPH5mNA1prEvgcSiUFvlPRlZdQAp/sopXp65izGwHVKE8wKTzI9vK4AW14\nUeUEZgIMaf5idLFKWmk7vJBhGm6XlbpqQnjZP+u212c2w8TK28fZkDxCCdCo\nch0Qq2y8jO8rlbHtDu39lKynL3djQyldCSGt7lb6V1ChBl8h4PNTtmNuw7ub\nmcc8RhjxU5dsUu3pcCHxyMvVe5CG6MbMIK6L/FWHrd5hfA41ga3wWxFyGR7i\n8OJq65qCGecjb+bdX+IAQ/RghSNeUPCaAxqtrhFrF/qjJCKvY2rIDEPSnMvd\nBuDeekf4vvtm/5EOVL2Z6VnXOZiEGSQRvxDkfEXLM55dG+CUMa1cdigjVqJo\nUVnTqPQUagCLCur6P6Ike/3K5ETFT4vSbVaW+m67/S7Kuq1JtdIjO+kA+BD4\nSnmnY/Y8FHRM8//REOSSL8i6paBV2EFggat6CkMF0axigWGObB4dIUGA4x4Q\nfYIFTM7J1rq1BEWnFqzYkY337jQiscPV3oB3sNCo/w7VPR4Qtf1kR/NTScR1\nuUDmhk7B5/wk0cWoh4b5tEipMD2RfZpOf4DZEfmhidY6ozRkrLJjM9/M/DXp\nJXBxk1gaIe6j8PdXdDU5LQm15rw0W21hVUnweo/eZXHkLVuuw3NObh8RgdBq\nCKs9\r\n=eBB4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9Vmb+Vd5rWNRZWyQPSd7MyHS5OJMxY9R2fpikfOOsdQIhALdi4Gt6OfduLjh4kGWGuNNdxRCvA4ls0COs0m02gFwF"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614853934.0_1614854796931_0.020337913597313628"},"_hasShrinkwrap":false},"1.0.2-alpha.1614872469.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614872469.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614872469.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614872469.0","@energyweb/exchange-irec":"1.0.2-alpha.1614872469.0","@energyweb/issuer-api":"0.1.4-alpha.1614872469.0","@energyweb/migrations-irec":"1.0.2-alpha.1614872469.0","@energyweb/origin-backend":"10.0.1-alpha.1614872469.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614872469.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614872469.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614872469.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614872469.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614872469.0","@energyweb/utils-general":"11.0.2-alpha.1614872469.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a7a0d5671362df4ee2a513508f4afb17ba687e25","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614872469.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-mcL7W99sQmb5h/AHTsselskJrap5lrQ3Mwu9Wq9E+mNW7vNvJecKzYNk3bAQnwtlszIhm9fDfY16Y9c12IgWLg==","shasum":"34dee00a9ca61d8a8c2ec49a89a114b754e1175e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614872469.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQQJxCRA9TVsSAnZWagAA6VsQAJt2uy2ePX4uZg6Owi7B\n9weiDAsQGd4RsX/NbWdXqF67/MN37LBssoCsRQoTeHbmhc1RgnhfXr/UbNWm\nAOz5cP23niwcZX5QMH0fJUOkYpN/SYtnrkoTlMQU58oDNmH6RCdQGmAVe7M6\nFc5l+qk3wTPAreZPQHEk1Ea+UH431rNj+sOVKX8YbkhAqgdE7pnxFTfG3ymd\nxPrE25i7QU4LOtWbsfaHe7hUnnIvBrZcWiWdkB7s81flz13DhvhlNSPC3Fm5\ngK4qt3FOjsXBe0r+faTmbpLLdfAItJgwaNXHhkCpZgZY8xJ94m0GD9IpZRiR\n5wgV0Tv1muAhgWWyLS36al/SNCGwQUa3Ac/e58LXpnMXtlMUvID6pikN3eZC\n18lJNC5HIpoPPUIQnePXjBQDCu8lh591X6337Ax0Bzk4lFxXRrJlwBlMon+Z\npovC+rRiUgz1uu7fKfHETIMR1mYyIu3FOmK9wzoJb5v7TyCBjg9WxgbLimFv\nLGliFdk9/a5Z5kjIWBEhGRTMwL7rKpFhZg2yz0fXZNT8E4YkFoF1lsOSzM3U\nWPEhYYu4G4T4HZqZnIXS3ePFBkycV6gyvxiGbjbb1AXbqpAADaUaJx33LIxB\nkngwliAHm2jBbtmal9VA3EcJVaZMt4sj5bD9PsijBnulPamcjZqRhahvoM5m\nzx6U\r\n=OSnp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+Y8/CCEjTY2yM3Zft0lmLaqzDndAm+ILvh7Vki5HBrgIgD1pEPoUDCB9v7TSiLphpnNExGUxqEg+NrX94hRlADbQ="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614872469.0_1614873201169_0.6368603548013549"},"_hasShrinkwrap":false},"1.0.2-alpha.1614940330.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1614940330.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1614940330.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1614940330.0","@energyweb/exchange-irec":"1.0.2-alpha.1614940330.0","@energyweb/issuer-api":"0.1.4-alpha.1614940330.0","@energyweb/migrations-irec":"1.0.2-alpha.1614940330.0","@energyweb/origin-backend":"10.0.1-alpha.1614940330.0","@energyweb/origin-backend-core":"8.0.1-alpha.1614940330.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1614940330.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1614940330.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1614940330.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1614940330.0","@energyweb/utils-general":"11.0.2-alpha.1614940330.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"3de0fae4c0090391a6b561b7766b7088370ffa33","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1614940330.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-tzS9BY3CW4OJjc0qeWBptGNcbvQWmNexdsMeFxUUs1pIPgsKS5E8xpBIQIpiRLMCHs03sbQipcd5GDk8i+/y9A==","shasum":"7140f7eed7abb221fb000f5d9881be393431ec48","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1614940330.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQgvhCRA9TVsSAnZWagAAbXEP+gIWam6v2d/Ofli5rhky\nQLSjekxL0MvvdvE/E/hkvw0CKSEXpMzzlGnIVeEbZgZZyCJf7MzgwoszvE/e\nAByDQG4pR12Bspw7N5xScqeQCm5fYgZh12VQwz8FEzVSNJ37rmPd81EJPDh/\ncIFttAOU8ubKiPh18rRQVr/VRYrniT0oVaC5OOzwQOW/XdsL+pw9jjdj/QXd\n75mdDUJpgki6BZdovygVjogcjPhalK5Ne6JRvBRkvhLSwy3BtTpa0PAqx++A\n1t3g9j96s7JqJyDrk3lwjwTiCCsAh5WFiHG2zjGiRoyF6iqrSmPJjpX7RrHc\nqjz8tSJGT8tBMSlJp44H9WlQ4X8ooW8OK4HCQJPAm4QskhyL7f3bOa1OZ4P4\nS9HuHV2k61JnIMXkzaEBvU3MxW25R7fGIBCn86tLX5E22ilogcVkuTfoY579\nhxWge7YxU6uGVcqFyYAoDe9uc7fruRgVYbhNgY6cbEmOh9laGP9RE7G4tpb2\nBST234i+f0U1k+fEP5aRnjV5xpgq/2RAwXSOefxL7QesgQmx6+Zri7EQf/Rn\nHBARrskFJMgT03nxhpXmJzN+n/1oSlR3hsKSgxrjWiJRQym+hac/1q0wQ30i\nYl8UHYPao32N1J6+O1rmUhiDMWCu+zSyYEey1QtKlZtEigTrApFmUVGDh5Rf\n8Mm4\r\n=oL2w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+WlQv44bBnXVrMPAaaZJpoVhWGvA9Yb4Yrv6I03u9agIhAKe63JKvQcbZHeKhd7HuB0cEhQLA7abD/csK4yD/cWQ7"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1614940330.0_1614941153216_0.017006410545684858"},"_hasShrinkwrap":false},"1.0.2-alpha.1615000967.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615000967.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615000967.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615000967.0","@energyweb/exchange-irec":"1.0.2-alpha.1615000967.0","@energyweb/issuer-api":"0.1.4-alpha.1615000967.0","@energyweb/migrations-irec":"1.0.2-alpha.1615000967.0","@energyweb/origin-backend":"10.0.1-alpha.1615000967.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615000967.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615000967.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615000967.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615000967.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615000967.0","@energyweb/utils-general":"11.0.2-alpha.1615000967.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"eb47b92b4b49c0fc6613fbb13aa0d00482de3975","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615000967.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-r/nraK+qweVbDgodQfJbJzDjS0vYyBNXFwn5pMMz2QgiSK+VfLBFh9dk1XyB/lPGNZuE6mX0wcgGGmmzzBItTA==","shasum":"0a135e38f6b9efbf4595992e64a077629fe6ac24","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615000967.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQviRCRA9TVsSAnZWagAAF1AP/i+36zABc/YeXSn3zlNO\nEH4Vj1YPchFOOFTJQxzovJR9ApjZnrAgiytLe/H1Wil0U6ZvDLuMNUzd6koR\nZD7U5qzvjTxbq4Zd0yL9U5n/TQJjPAXq4wMMkqhpnUaFmxlXeajluN2IhhSf\nrgSrZbJYlKrY4nsqZhCcztAdYjUJxfnJmpe0piyp2xR6Np4CtR81SEd2GPBt\n/3hgefLxLkOcd9KK6iuct8zZ3NUy815dvER4CaCgornjlqJNlui9RnUbPs5A\nBdAw0UuwGWxPLXSUc1KTIGkNaM6q0lHsyvwvqQseR6d2nOPeldTY4hr1mpEh\nHPfzlUPOG1LE9nrmZ7MDxwBOC2XeprNROIsHgqr/h2FCz5yLGSspci4Wbi+k\nP1vxSuVKJUmgoAp+xMOjcWcQJTdRLHGjrMmtvkkxi2e66btIQ7mKJA/cJ96g\n8VeZ1QygQHcpRHTIwQurPxXX/8DVdwZYHDskh1GtkFU9Srnw3HD2uD/njXrl\nOYdPKLZivcMJUfNs5UMJoXscXrCwQjzksQree+y4eruG8yey+JiwPB+pEcn5\nHc/n7GXqC+OraF5apyigC2v4P1h1D0pOmeVdv+40Pbhu/1gz09s6vJSJhS8z\n410/XDdQM6ocepoHlMf7BV+RNvp2qARTdrf7X6MR3xEW69C9GA1dToxthXl3\nNz0H\r\n=A7PH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeUI3ezMeC0gWuqimXJqgggterjP8t1zCBKMJMtxBcdwIgVIrStTdDBjDSZbje0Gah8HyH4nngw4wECUVlVBIbI7U="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615000967.0_1615001744845_0.3767510000820118"},"_hasShrinkwrap":false},"1.0.2-alpha.1615009323.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615009323.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615009323.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615009323.0","@energyweb/exchange-irec":"1.0.2-alpha.1615009323.0","@energyweb/issuer-api":"0.1.4-alpha.1615009323.0","@energyweb/migrations-irec":"1.0.2-alpha.1615009323.0","@energyweb/origin-backend":"10.0.1-alpha.1615009323.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615009323.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615009323.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615009323.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615009323.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615009323.0","@energyweb/utils-general":"11.0.2-alpha.1615009323.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"0646332a2ba5bc82dcd38b00b3064137435b1293","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615009323.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-tXPb/y6EOE9OiE1Qc2NBE1muSu66EqqxnsB1qi7cZNLfGmmHhZknYOwVbv8/m6LfVMfatEJwfShVpsfI4Bg48w==","shasum":"a31af4b1015bf065520465c4f6f0c75e7abf0cb9","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615009323.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQxmGCRA9TVsSAnZWagAAfC0P/0yQDvaVxZDT6csTFrbz\nKxfjX0+vtpzTw79zUOVtDekjZp5kjCegi4yWKIr4mgrP9YT/l+vgx62RFF+t\ndf/8BN+s6NCGh9oCQr5Tg8aOwTy72cn2t/xJR4HkCE1N06zSM6eJQ1Gf7574\ninGe4iUhfbEnBhI8szM5AbElpoB4hdmYpynm1jX2vA0GRgVi7G3gSnbrX456\nsZu4fnIH36JBZ3pxIeX8q9U8bJHPASW0a3mKlZfZFweKdiAfaHTcI5ZS6fUI\n2ke2l8F5wHCHC8BJgbRRyuq1G9rZdZcUmWLKi7fjSYe4HHIu6UtytnQdKZZu\nWFgQ5+1Vy9PKq3jyJ64hf9Sraw7vGYSc7VZyXsCXevDutXdXRPcjDuxC94V5\nSfZc3SpatgfBd6NX+FRDJ3eDlffsC6H3Gzoz10q5SDFBBvBrY3M6/vY4yOmd\nvP15qTuJxwnj7rdygg/OJBJwFPDlrAJabU98PugkinO6fuGkqie0VSyrqgSn\n4avzWwZLXEOO4TiYkbl1IHFzdQ5yQ28HA/twdnPLOAaL5Kupf4F7bVOrznQi\nJaWFKdcI0iDLSdsXIAHFqBIBBruWS3j5DneASvzxOw9IAyfEph1FI3PDsiZN\n/oPjMvR6gMQWP8yF+AHeW6ak5po43nMIfXYPeL6wM9tBm/BoS4AuN586/rhP\nALjX\r\n=a8Ey\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWLUgnnwacmNLHpw2AuROleVGUWXIyaH3MnsGNME+6JAIhAK2QcG+m1nJ8obWAWZTrMveLHn/I6Y/X5+Uq6uSbb7NE"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615009323.0_1615010182291_0.17296288318272235"},"_hasShrinkwrap":false},"1.0.2-alpha.1615022514.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615022514.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615022514.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615022514.0","@energyweb/exchange-irec":"1.0.2-alpha.1615022514.0","@energyweb/issuer-api":"0.1.4-alpha.1615022514.0","@energyweb/migrations-irec":"1.0.2-alpha.1615022514.0","@energyweb/origin-backend":"10.0.1-alpha.1615022514.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615022514.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615022514.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615022514.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615022514.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615022514.0","@energyweb/utils-general":"11.0.2-alpha.1615022514.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"df35be147b0be20cebe3154e260ed72c777c734f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615022514.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-C9QTQXgcNbQeW+lQ9WiGSXcV+bJmtPJIWR7U813tmU74v5UwIkUXEwFLWy+1c1EGa0iSW69It/V0uvkqUqNpeg==","shasum":"c90d6f5e71291524700922fc88a8d600ad2b0215","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615022514.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ01GCRA9TVsSAnZWagAALu8P/1Xaa2vIpQOPVlN2MmfS\nXj4vaRj3pcdAp+yqQ7tplWUAcKVgoIKYDJukFK5x8No+Af3iHFCkm6tXvgLD\nLyVxNQ70Wo9aQk5X1acAr8l5mCQKzmeoCsOmssTHfNmQ/mbMZo3OqzKtEeyT\nGfaHo/Sx7aNvWYC5E+OKwLj60HfQnR3ER9nTLDSlSUZfTxi6CpiJfrVQKgD6\nO0QwC9qpmTs3CVykm97bhBztKjpFaYAIjpDP4xS11+86R70wPgPx8ditEmI0\n2Lp4lLko4EvOi92QiaIaSOja8PCembs82jPUjsauSbCY5LNl/eocJE+6DZYf\nJqN2bqFByP2FtEhtCjyl9lIJPLIAQ1GaKYH5Kbp+BxJJuDe3YFjPuP4qJ8hM\n7BER6rQJY9IYjX7/UHfRSCuk9yPD8iehAFOpKuIHZ5k+BiSBKRd+T5xmQb6X\ntp4ycjso1ldAqiuFnQw6tNwORY3h2sZ0OjOyBy1NyhQ2DLNQYGl5jnneGloK\nR4IfLICyNpi4ScxiKSE6pZtXxY1EY0990Eq0iNVNYnSNyBxlganvpPsiCLRD\n1FNh0vkoyiYGXYp1xwETFns4LMHEuFsjNT31Ncb9wD0hlaZfAbT3ionqsRII\n05ux9RBuRm4fz4IiESpuiDK1v8cZFph1MGgX416FuFmn7GxGf7gjHUcfw7GE\nr9j2\r\n=Kclh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3wOVVWejJvassAs6soLZ4O5s6njs5SJ5OJKwfqe6XcQIhAPIet2ykajrbIBIHQFjZ4KEL2T9y1TSbXQoss2qUgjpb"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615022514.0_1615023429921_0.49139456101065626"},"_hasShrinkwrap":false},"1.0.2-alpha.1615031418.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615031418.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615031418.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615031418.0","@energyweb/exchange-irec":"1.0.2-alpha.1615031418.0","@energyweb/issuer-api":"0.1.4-alpha.1615031418.0","@energyweb/migrations-irec":"1.0.2-alpha.1615031418.0","@energyweb/origin-backend":"10.0.1-alpha.1615031418.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615031418.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615031418.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615031418.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615031418.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615031418.0","@energyweb/utils-general":"11.0.2-alpha.1615031418.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"7c78c8e8e70a3be0dfe1b00654bd8902526672c1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615031418.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-miblTdnK/BfW4JLJgRCThDLEjttfd770BSslYnLwvH34kxZe8SrrZYjuHQxUXfgILMVTXKxggWecbnrMAqmKLA==","shasum":"00e777626197431efd2bb4984a9d207e5f7fcc5a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615031418.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ2/xCRA9TVsSAnZWagAAC/EP/Ak1k/SLh8SPUe2sdh1R\naAIyxe5WL21ENvoQlRednpd4mAdNBf8y7PM5RzW3lBCXIL71thCea6wkkPoB\nHvHsAL2sEiLUA+DJfGXJdcvSMN97+ZHMjFye54PwP00IB5m/YTZc7T1Xw0t/\nzyG0mr/hnMeL5ueMo/P3aDLLA8vvvcJvuk26ufLg1jGVaR/LQ4ORHe+MiWmz\nnfCPSveXgSdA2/5PykkR2VkE0yQvsJO9iOCmmL8KZ2+Y5/aA5MaCKB1j0UTI\nIW0mraLpSxSTOsjaFdCIbtI8tSs2RCVAURMa5tcZwHfKQxJMsa1Vs4OaP5lR\nCVLAZoNLFkyqdHP8Fb27WEGrgJXk108kvwpaZXB0BdZ9jYl01+Oj4MJ8jWdk\nKi96Q09YIc558mA21BeImRRVPPAY3YMlk00vpb4YKRnI3ivoG57Lg1DcPvu4\nIql7PIz5lnyNF21U8jN2gDpBH/eLF202Hs13ddJfFfYkpRgj8p0kUS9WV58A\nzds1cpznRrHwVghNKTDnwJOBSDahrTMqTv80o4Qkz0rCa0sVBMBQUoidWoYt\njuW0QLnC9B7g8aDPQw9yDGpCrNiGXuAmnNPrXxthmM4BdK4DFhqefB33ihFv\ncxzbvbhLKwKEhhamMltF+iuhCYZSg2HCOfbnlAXQ937y/Zo/fjnJlEVswewr\n4xBc\r\n=NQDF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWXM3ojXdyV+Ii5/FfCNxosjAp9/btesbj9mnuWC7byAiEAsOXJuyd8ao06aoeZnGuuC9gZhWdQT+JSuFAA5GDC7Mw="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615031418.0_1615032304518_0.4379064089799847"},"_hasShrinkwrap":false},"1.0.2-alpha.1615035823.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615035823.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615035823.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615035823.0","@energyweb/exchange-irec":"1.0.2-alpha.1615035823.0","@energyweb/issuer-api":"0.1.4-alpha.1615035823.0","@energyweb/migrations-irec":"1.0.2-alpha.1615035823.0","@energyweb/origin-backend":"10.0.1-alpha.1615035823.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615035823.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615035823.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615035823.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615035823.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615035823.0","@energyweb/utils-general":"11.0.2-alpha.1615035823.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"0bc2ce9c7dfa479fffb2660b9b49cc3b33862f54","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615035823.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-A4NWX/cqE9Vw7H0ENWBnFgEZGBk/6C4pmAiDpeboEvNf5MAADfnumBJhu5pjhTxAFFKmURp9LCPpNyHVY/CqzA==","shasum":"875aa348f3c4aa562a96c4175f37c536dfa53432","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615035823.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ4DmCRA9TVsSAnZWagAAz3cP/0Fu1vomhja0s2ib7bMb\njQvQskQFKE3SQsW4jJdJywpdlyhS9TtsRFzUrgv3gMk35xAxLMDTf2Q/kbXA\nXf1ZaVaZwYwwDHWO9Xm67Sv9oGKAWKHlN+VvfYKs87Cejoct29pao4yZBP1U\neO/5GRcbGjtnDFOmiAnhJLJ9Mj+gPh0wglE0BvelIs/P0DXWF6yg7nn/0s6B\n/oplraOFki3ovxQm1DfiwbmCsrnlRzlUnJ/aRIDf21iuMnwgHxHs3qXmNRx5\n6+MEdOF8eqqJHvKykMTL595aGJV5hBpMpZCDmCF5W9yRElp027soV2lcqNk7\nPxsa7EnSqnl290V74RM8vOgfzBe5qZQG5ReuX5UdZQRTv8fQbSNVK8Nyiv8o\n61OuAIBuG+1hSkevDnZEHUqevt6t6OCinB7PnGp7ld3Yu3imaUeUAmcyyMtf\nG/H+6VVX+x0oGkzviPhDU/hBOHm3X+gOGEkw7fF2BeG3u7fkkG+5P6LSSi8y\nSkMuR0HoHaM4YfUkPKKl1k0Hz/PpKLU1QtpGJtxHdRyMKZSQpB6k5Bws46hu\nCirlJ9XVRT9Cb2ACdg9mejTqx+IP/rkLiZqF+YK0/3LEELU4RS4jZoWz7hwp\nKC0mvD4Mrpxwr1RE8VUn6BlsXB37tlGawahvhKcktAxZHFPCa1gzrGKWuHsv\nRbLO\r\n=w78E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFR0x9gJAeEiJQfp3tbZ7rRsX9rJ41N8LavKDATaLlGmAiEA4PU8cQ34lcfRyX7Ku3OJnkTYaGz88+CB3DNk9mgcLHM="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615035823.0_1615036646098_0.1955712856967613"},"_hasShrinkwrap":false},"1.0.2-alpha.1615040875.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615040875.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615040875.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615040875.0","@energyweb/exchange-irec":"1.0.2-alpha.1615040875.0","@energyweb/issuer-api":"0.1.4-alpha.1615040875.0","@energyweb/migrations-irec":"1.0.2-alpha.1615040875.0","@energyweb/origin-backend":"10.0.1-alpha.1615040875.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615040875.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615040875.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615040875.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615040875.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615040875.0","@energyweb/utils-general":"11.0.2-alpha.1615040875.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"87bc16f195d8ed2976fd0ae4c845afac07394abb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615040875.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-kut/b3256ZDrUjLY9bKXpKceT2WHuzkpkJKbaXbUJgf+s+5YJlBDetmlH2DzMth0FcUT9Mfe8Syw5r68U2VNzQ==","shasum":"6b1da65b8bedf0c47233338f29327ffca774a0e2","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615040875.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ5RsCRA9TVsSAnZWagAA36cP/02V7WtA4k6LgEyBVpnj\nXyzikfD1zzUwfo/kKXo9gerGi2qeAAEIxt+W8Xv7Zuve90npk/f4W4Ri1jvB\nJtpqDLV38EiXHefGejZZWcxefZJTUiihVO4itpRbTQS04tl6xgwtM8xzmT+m\nDD21JRQz2/xcyiW1uPIFucoX/k9tkxIPAlitUOW13tVO1Lm6xman2AavF5Bs\njmvMx1xSpBwxTvZd4GodYrBEOOtGjYOnzPnwJYMemDA+HUg6uawgQow+bF5E\nyn4R/qWxLJycRzUDOuVPZuiquRzY40d96abDiQ4LX/Zmca0NJEYfHRP6Y/RE\nmoBGL+Vt5ZCfX0RSEWcJEMoly1Nc866rpHA34Es1G2Dceq/lY2e+n6so81cP\nC6dIHDzkFj8L/tfkNagh5TbxFnJUYP9mp9Tn1XlCWx05PmfI7rruRl0A7Cwb\nkE6BsuGXE/Zjk8XpcVP6HWqsKuv7U61hhQmo+RUckuAuyTaauONKq8TO2TWp\n98xoI991585/0zOBw7fAUQEzkSFfdTTS+59qlRa+cjQiXTNJ/NTvwTAaa++L\nZy+3Hi7Recpv2s/uSq3jP4kJ88bnOn905oRewkT0tKB6TesAP8PFo9A8mKX5\nJbSCyJeXOCb2GQNe8HYp9DIMaMOsNC4T6mhUHyLGdGXFsF2UXYltA8sIujVk\nH/ZI\r\n=Y+sg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAieQX8jVKn/i+S0SX7ynx4kLG51DKtJNaWUYUBADCBlAiA9yS1JqjWWOc2vYbc3HxiHBIr9sIH3km3nNz5gWiMUjQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615040875.0_1615041643588_0.5060886631224324"},"_hasShrinkwrap":false},"1.0.2-alpha.1615049775.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615049775.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615049775.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615049775.0","@energyweb/exchange-irec":"1.0.2-alpha.1615049775.0","@energyweb/issuer-api":"0.1.4-alpha.1615049775.0","@energyweb/migrations-irec":"1.0.2-alpha.1615049775.0","@energyweb/origin-backend":"10.0.1-alpha.1615049775.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615049775.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615049775.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615049775.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615049775.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615049775.0","@energyweb/utils-general":"11.0.2-alpha.1615049775.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"0f334faf277b889e3bd8772f5a9d972cebe4e417","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615049775.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-QTbvDKdISeeqApmfk3JWTkbP+cEw/KedlOPxdgWG1hqIz/y/5Ptgl/TissGT9BiLbPIWiyvQpenkoUL5U0EVFQ==","shasum":"6ddc453fb4515b8441ed875530610d3ee5b29654","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615049775.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ7eNCRA9TVsSAnZWagAAFbEP/10lN6wiC7OLdnaeRkwK\n2sK7IpEHQ0TNcqeD+O2aIHdeSXNQTNyoE5x50i0w07fIaAxz3MsVe41DD760\nuLrECQ57jXsD4sQ4adYIzk6xjeBgAzS1sgaNNiIssi26r4pIHChPGnkn1wgr\nKB/Rnqa/hY5uPIOa671ZpYUbraBhAFXwjCZahRR03/zMUehqLc5lgL0sLVtQ\nHxoUC54uG012UHQFga6Sy+gn1F7KBRLVou9YMgEJq38QQK+bdOpcbKa87pC0\njqQw39LoFOHgUbivHkaT8eq2R6h0YeYGHCYhGc34kl+aQTnQ9BVPgRP56T0F\ncx0vnQmar2C+iZxeSP8bG1OjKGNU4y1bRGlNSO0FpO0Dl2eSqVrTNcgo69Nb\netPgKLs4TE7Aa/cMDGG/RK8PN76P1t62CAfWidPoLwox0E792aiQgbf1gbCm\nGAVPC4SI4EpIyLUmny96jYXqYD+RXfVyiYuw+v7AEe/fm7ND56pY7mc8DMD4\nY4SGihUAc0DquqAA9o+wHNlX/crlUs25gKFuykicAaDXhM6PI0sjsVlb6KOD\njxvJkEhVEJZsAyitp9DS5Cx8XQiLn7CsuYI8vfq1UjOK9gccuz9aKKjvciIu\nNigNXqdc+8cue10wGwJTfeWtp2dDnk8+RNkZd4S8+LqwIV41K+ffrNKpqYJ5\nyHvb\r\n=hrt0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqggKaKfwbInhLxPmJLIjWVfiwn4OEJ2Jwbm+R41WUYAIgRTJ38WNC+RzDCRY71Qowf0+IS1pLFHKr6SlzDtkH6wE="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615049775.0_1615050636892_0.8146044255581899"},"_hasShrinkwrap":false},"1.0.2-alpha.1615058028.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615058028.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615058028.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615058028.0","@energyweb/exchange-irec":"1.0.2-alpha.1615058028.0","@energyweb/issuer-api":"0.1.4-alpha.1615058028.0","@energyweb/migrations-irec":"1.0.2-alpha.1615058028.0","@energyweb/origin-backend":"10.0.1-alpha.1615058028.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615058028.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615058028.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615058028.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615058028.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615058028.0","@energyweb/utils-general":"11.0.2-alpha.1615058028.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"592556e67d66886a0e59deada312f39340884cd8","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615058028.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-q0fewWm4+G8lTw+Tag/vFpaO4Kvqhvdr8pqJ/27DYK8Ba7ZqGE51a+TaL05/e9H74SUQYpEh/THWX5jHMc2zKg==","shasum":"1d31ec3803b1bdcd2877eb4563080d371058ebd2","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615058028.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ9dOCRA9TVsSAnZWagAA53kP/0Npb4DHzHng+Ui9cvca\n+PkNPvLupA8lAO+vFlILz4RWN9ieu8dWdFIrE4GG5d1dJ3n9nnFmodEHaMIB\n4PfYPgHkHzDrX58ChwvDdnY2t6e49VPz1/RtDTsNB+QjBraauT/+OXMMCfFL\nJL8+ePG7rRReEC9twqGXszeIuls7iqXHh4di1q9JNtqG5yG4dJKXQJXpsiHZ\nJriiMYymT2LDJbMQXroTJ5fFw50OVodLFOfedUYlPf9Y2NiqiclR+Q5G6vF6\n+L2b8WWMBD0C11WoQT/x/rUl6cFGEXtKKwLO8qpEyOQkYera8hmAATMEX6iv\nNi8pdvwZdtAUEVdkZn0ZpNSiXt3JvUNWEq5aREF/ma4WOj6cW9YiZGZPC1ZS\n9GAVeIyTbF8eoperUUC4a61pPZ+UnZavLMdJYJy+FHXmsBdh/xEfBTEV8j8R\nU2YGa7cGF0Ye2R+EvpJYFVYRxvkH0IKMobDdOeKYTB/dsqn7/0HfTg2gN0Ys\n/MLuDjTAkMtq+v6q/Glg0m/tSaydiPkmQtRjhDe/8UA/RPbNYjf77iOHOKTK\nW1eYl9SnAOsl5vqyGSjZykU4eyj/yZSZ8HlgsEJ9GHmFpNfI7AFKOQyl63TQ\nvxYaU/cnfz3N8RXKcFo+SzQAzgUxsGiFFQlM5Ib5Qby3HRg+pgoOG+r8hbof\n49KO\r\n=V+eM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAQ+A7o6J5epJYU7zH2lGJ+5ORrtCWJqWbBTIRQDMhgHAiEAlDQmpfDxbPX1AktmWW+OeLTh9zR4GqO73wPuVzjYx/U="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615058028.0_1615058766213_0.30530634850453975"},"_hasShrinkwrap":false},"1.0.2-alpha.1615066487.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615066487.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615066487.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615066487.0","@energyweb/exchange-irec":"1.0.2-alpha.1615066487.0","@energyweb/issuer-api":"0.1.4-alpha.1615066487.0","@energyweb/migrations-irec":"1.0.2-alpha.1615066487.0","@energyweb/origin-backend":"10.0.1-alpha.1615066487.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615066487.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615066487.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615066487.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615066487.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615066487.0","@energyweb/utils-general":"11.0.2-alpha.1615066487.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"ed9a75383c66ed0502ecbb79f9bb029e708852bd","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615066487.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-TjSstUq15158vrUQ1WGUsyrerQHECNELZCgyHIl1z3wj7tiX3TEkVgmmR11rrxQ56fFhQBgJC8b2mIgOH+wu3A==","shasum":"12159a096d27a3b85044bee6e71d89efda321e95","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615066487.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ/jCCRA9TVsSAnZWagAAW5YP/0xFl/NAfz0C9sJEVlIA\n9Pv4cFu7HCtWRZqemo9L+GvAVE9baYCxZaJu3n4jWdoIuRaI8yAV0g0oIF5U\nV2KaoO2GENv6mX+5ENIxcrlbScDRLbY8zTAa0V0+BdCF9prUBSX/arB+E/KH\nQ7DC3n4FRfMNhvRsw3puwyyHL8qECSsBotMqKONJlvcJz0+tMJ8Y6WjGyg5z\nwNPxE9rJeTri9Iyy7bUUcOrjxPRgCrumY4mvjV2mtjhiWqy9hNkAY94wx/B+\nbYGZCksuPdr4H3nTplInRwPXu2tBWJ3TabAROls8yp2A0surBA3M/IRW/oH1\nn4+DDsiweqVebCKwnTW+7MD5lOjchO23bBkx1T1OPExVBx4MJI0Fj0jOdTbh\nFmhf4uG/jDK+gZLYJJKyWKaxok3/b7cebgO8QOB1Df2js7bYEaGIHipIFwsh\nPO3mTJf1FYmG9ZW4UCkyXvSQ+SeJFwIhcli9qzjhAqvek83zkhl3jZbRgqdV\nQz+wC4NiEp9ouAs1PoobVI8GeOPaE6fxDtbQEZhUqWHRgMbHxefPLnPq0ja/\nWXtUhXutQvyngBai2Qi2PGkZEzpkMJAxgHqXdGyzFbo+2jYLA80eUKtBl7xN\n+4ZHxkUJNKaQTXtru5lGcObYmvu54apGAMAPJuk7U7At/6Y2Fn7wOwAk9ujG\nORL1\r\n=s8x0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFZfdXDSZU1nqR9d6clC9VZhE/NVJDz8XCMltasYVRKgIhAOTTk3qdFbmxuNV5kf9ve74m9B+xp65PzUVFtF1F2+JU"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615066487.0_1615067330101_0.4563282896419045"},"_hasShrinkwrap":false},"1.0.2-alpha.1615075473.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615075473.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615075473.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615075473.0","@energyweb/exchange-irec":"1.0.2-alpha.1615075473.0","@energyweb/issuer-api":"0.1.4-alpha.1615075473.0","@energyweb/migrations-irec":"1.0.2-alpha.1615075473.0","@energyweb/origin-backend":"10.0.1-alpha.1615075473.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615075473.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615075473.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615075473.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615075473.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615075473.0","@energyweb/utils-general":"11.0.2-alpha.1615075473.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c6c5364b5f77f6e3fd65cf351bab9a224a7bbf52","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615075473.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-Xolu4Wiy7wafFoEeSNj5cYyPcUqoZsF1z5eFssXhelY/LJJIDpWgupzcBCoINlF9+49A21Lu1FcMXLjD5MSN3w==","shasum":"d1a59d537668d3854da6ec4dff6003a87c80ed45","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615075473.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRBviCRA9TVsSAnZWagAAZC4P/35dg61U5KCTZ3yZTVcI\nFqRdOnQhVnR0MX4GxNTdhhSSZLrUN7m9n0LCS0LxHa6UawSqxnlBg6e+mvo5\nrEhT12DAKL1Pa+RGeUZgkq46y5iL0rBMavn4hVHjD7hkqUbrAMFVkL/Ec21P\nWTqIJixEftmIAkdirAxNZNMqRp2aPsBeP+OAYZF58tAx8TCa/fRJsEVqZL13\nOn6PkfSZcSbBy1L3cMWtLZ84WNEivBTCyBwQ2DlgXhJapokAxUh4mERSe7j2\nAi9yFkziWlGDSVfNsWdSmxRRWl5GuGL2dqhG3w6fFdxt/L1YnEKH98bzDogf\nhPknY03CMqmCGrfiLsuz8T3tb/3x5jCC8oBOKxKv5GchrWOFfaOBNzkgTnC5\njAdllJom2zqBca7oIPRN+mUGQUHkemFo96OzuAxwpYfwvoSxEaukW9G/osLi\nRMCThzqcKYi1C5ko8AyASnR1xU90F0Cj170ZRSUkQeaY0eYKpvuq5UbnvZpi\n0pKiQ5pe4ZU21hdjdO5rQh/ZpoYWLUee22b8rqeSnI0Y4ZoJcRdrJV08znYr\np3BRMArJX4YtCDiI5XG7Z5/NS0gaTc+jCdsYvOW5bhszzKYzDNrdgqi9L50i\nJXEtbnHyfmMpS+4Y8SUnaBeI/QsrZj/w7+mznBfrR7v/bk+sHUN3z2jiMzQs\nlKNf\r\n=l6P6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDVtyIVsYj6Ijuith+Yk4KAyEQaFNRAo3GqVyw8KbfhQIhAMyERGbzCASmkoezswGgKYuobySIj1+xWzoGfrSzp7ur"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615075473.0_1615076322186_0.14508366658129934"},"_hasShrinkwrap":false},"1.0.2-alpha.1615081588.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615081588.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615081588.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615081588.0","@energyweb/exchange-irec":"1.0.2-alpha.1615081588.0","@energyweb/issuer-api":"0.1.4-alpha.1615081588.0","@energyweb/migrations-irec":"1.0.2-alpha.1615081588.0","@energyweb/origin-backend":"10.0.1-alpha.1615081588.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615081588.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615081588.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615081588.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615081588.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615081588.0","@energyweb/utils-general":"11.0.2-alpha.1615081588.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"24d636e10721e3f7a0aa243bdcf119aaf02d96f4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615081588.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-qOzc8Rjap1usDGZRwr2gp+7D5WHpwmUmT/FoIRq7oWCdVivCz1e0TZax30YDghVRnnSeF2DapEYUE+o2IxkcXQ==","shasum":"c692e85360f24664ac1eb703a971a196c1953468","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615081588.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRDOdCRA9TVsSAnZWagAAJc8P/1ITfRSRKlXudNQ8m50Z\nMkDSFIaXGKXOuVJIW7TfhcOF/aIbVcApfxM7D0zU/TUBKz+DDcJRLTsnaHzz\n7XclX0UHgZIJqs9WKcKc43tQIZeTUn7MI1j5T90WrGwAL2wgbsneHyWIhUM5\n3ecwxHmM0wUTikwEjHJrAG2xSY7J6w0mbkuVZgy3hpa8ckEu7x2LYVcMGfhA\node7taF3bgCbpJWtslwBQyv1Fsz8Zq1n6F0jGoNfZzRCrNEOokzP7EVnvbCV\nNwNYS60B98IP1hm7YXdEKSa+oad2fUV8/6xtGClQyeC5ii0GLsubzGYH+Q2o\n157oELEhL7rOv8YyeHZa/8tFnnBgYgsCXSmUCDZIkoNHzM2Sxl6riGJ+u0/1\nk111rs/IYjGs3JCthmkzziBpTISJNRLhdbPx91SPC3ivpbWB+bJVfEY94OF5\nlusGOzlbmegPv3beFR/BZbcfUy/MDPmMenqxxHZb7R5faoD6kVfIj7tTzeze\n49wdOQwRtfzJBTFJXumpK6LQ8bbT2WX/Jmfs7XSAAKWQv1BQvdFDQlwaZUJD\nVMNRFXvPcJ2MyZ5r2J1DR/guh8ovEuRIYZwBlOG524LM3CqtwkfU84ALAz5n\nHeV5JMDKUGIFdcCIqeX4ycepzMO/OudtwmfzZP2BnxxVIESrDpajrpMoO3/x\n5rE/\r\n=F5D7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIeO4yLlCKDxCvY6eNDbPad1cXDPRP5hwDnPKM+qAeTAIhAJB+x4EzRZNhpRRi69s3il8ls1kScbdiOJXTKhIf1e99"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615081588.0_1615082397146_0.6648084795375186"},"_hasShrinkwrap":false},"1.0.2-alpha.1615088220.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615088220.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615088220.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615088220.0","@energyweb/exchange-irec":"1.0.2-alpha.1615088220.0","@energyweb/issuer-api":"0.1.4-alpha.1615088220.0","@energyweb/migrations-irec":"1.0.2-alpha.1615088220.0","@energyweb/origin-backend":"10.0.1-alpha.1615088220.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615088220.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615088220.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615088220.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615088220.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615088220.0","@energyweb/utils-general":"11.0.2-alpha.1615088220.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"860cb8f08a4518f9ce730f0b01fe9a8c24504ff7","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615088220.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-bBhZ+iCL2rva8F2tnyx9SG5VS3bJVza6zHNtNqQEznMTi/ZoHjDUtFUjRKFeDaIBT/Gkpwv4syoG8yntLDrLfQ==","shasum":"ae95081404395adf5873189a19a14a139f0408b6","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615088220.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRE1ACRA9TVsSAnZWagAAnvQP/3NWG1ckocxGbZYC//kl\nbvMMF3xvIvuX2PvLIgl58AHb0Fqnq0FTaLVx6LQbXQTueMvUs09Ldfil0vzi\nklO6LZx84ASUvhUKE2hqfCU1JI9QsvxhEsevmVUBdpOSUlpdfjg6pIlFeMSM\ndFAjVULN48AvaNFoLhIF75XOpjLkj6iQU43rrKoWMO95TFbh0IFgQyckL2T6\n+WUy3O5GZO1fJqeN+tii2jLzHgvKAnNEsAdikjReZPlh8bGE0MRoDGOK672m\nmtPmw6BccqUcQ72QzVAN4eipGB7Gsx5p8CwpiMbwbMXtvd7xNwNxP+0q3jTk\nWHAjiJGieX44cV3L01LwXw7GML0yvA8BH/4NxiY5/vOJ8Gu3bk371batQRm2\nvdOrq2Xo+P1/dd8Jp2DMXr+k7EGrUbdChO3P6dnsEueq3iql6TnMlXXCanhX\nuwA1tAzQ2ZSYrihCCRlB/r2c12KNWpJ5sMAJZRKZb2n9xV9I7ArHtRVPD24p\nTFHFIBOIvwfoWF1R2VST9/+GLuryaOt8mtlTjDmWBKemel8a34q0CsP1ieWK\n7UyojntJOWCK+QAQYJIU7JfISEeLjzo0vfi5ceweeUQtq6/uAs8mXXPMMok+\nTPp+nrVSTA3Nz9f6Q1se6rtrK0EJeqrCPtfQpIEs6JHJuz/LqQfIFRV1q4vV\n7Zdq\r\n=qeCn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEV7OLYsH9P0JVXXIdbL7lvFFhxEAA1Qa3DvKmEfpXfoAiEA/VjmN436nDMHP617blDC/Oe4fNbgqnmFisr8evcIl4Y="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615088220.0_1615088959882_0.32275219561053126"},"_hasShrinkwrap":false},"1.0.2-alpha.1615096656.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615096656.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615096656.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615096656.0","@energyweb/exchange-irec":"1.0.2-alpha.1615096656.0","@energyweb/issuer-api":"0.1.4-alpha.1615096656.0","@energyweb/migrations-irec":"1.0.2-alpha.1615096656.0","@energyweb/origin-backend":"10.0.1-alpha.1615096656.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615096656.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615096656.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615096656.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615096656.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615096656.0","@energyweb/utils-general":"11.0.2-alpha.1615096656.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"2aac4f1a5e150b9f977ee4f19387366f27566bb2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615096656.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-pG4CVdJO38SXii5dEYpyY+taMJH4ou3yqk17NFyvI9A5FpnTFaZ6FUr9UQQ4aDsHXFvjWf838OXdEYmXCfsyVg==","shasum":"ffc17b1bc3ce0571c554fa073bde63a1adba6319","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615096656.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRG6+CRA9TVsSAnZWagAAiCAQAIn0FSr8lpIG23fbrV6a\ndCPsaEVxDbZH85NVJuXwoldywd0qGY/FxCzA25EgC90su7632DUGuNLK1pbQ\nycv/3GJR2cxdcZEn4aaVYbanX9lQNKHu5l976HTiZR8h7Ene70hIQQbDFoJ4\nGBOBFc60K7q/MX//gets0Q53j10eIV8m4OzVwQ5DonouwhIlO6r6zQYqzdbi\nq2vuh4I2fYynXwxeePs5D8nifCZJOK5sm+UPbUacr17wArWfTEKTbcCjoNqU\n5kEiXX8ZI8gtorehxMCfhbGoB3Jyv2ceJvzxvE2sdo530xzr8kXdcUMwsE7/\nSOv53YIyEWKizf4HjNyEoi0N1LEktItSwyron/RKrjKELLh1PgZAd9OZSck8\nUeRQ498dixUt+Cv8nuXqxOh9HrKZ2kiQMvHAO46qEqbUW4sPZGlQ8YR/XBmz\nrPgZR2YVrY/db9NG0EQDa5VEY4OCtG1TL/M2cxKNd3EmMpssUfRG5UdfDHTz\nEA8clz88Fc67QAlcEA3TPbfA7tI+szDa5+XyS8vo+ewL6kWWq4sLBaZRBwsc\naybQZsuNo/Jl+VOO4uWF+Y8POMNQiiUIpYCMvvXz/4lqkhLefIxEkKNyYCY7\noNW0p5lgHqFDuxECJZ7FR9mbhQldHnTA4hOdDroo4uaMm8ACYotmQSCsewvu\nRdD5\r\n=sd5H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHX4PllX4JrHB+QPMp16/dU2h6/miU8ZqolzqTbyHp5vAiEAgRLzv6wKhfkRMdWcyW/rXmK0z6Hd+nvlTOPGcG/Ip24="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615096656.0_1615097533775_0.540227786330556"},"_hasShrinkwrap":false},"1.0.2-alpha.1615106057.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615106057.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615106057.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615106057.0","@energyweb/exchange-irec":"1.0.2-alpha.1615106057.0","@energyweb/issuer-api":"0.1.4-alpha.1615106057.0","@energyweb/migrations-irec":"1.0.2-alpha.1615106057.0","@energyweb/origin-backend":"10.0.1-alpha.1615106057.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615106057.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615106057.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615106057.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615106057.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615106057.0","@energyweb/utils-general":"11.0.2-alpha.1615106057.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6beea7bc7068256f1ea629f30724251e3af5193d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615106057.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-uSHoxxEwPeohBOZzR3Bh2YMI8srQKCvOLItEUUSnrS5gJo4Jvluszl3HPYriF3NX9kDveeits39KnaHR+ZMq1Q==","shasum":"9e6ba807e4c703142bf154fc4f286b9bdeef3712","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615106057.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRJNKCRA9TVsSAnZWagAAaDsP/ApAzcDD/Kp/kYgp6vob\nHvnMvQqVTib5gyuJw0gRVW4lDbvuLsGlR5M+Xq45hlUZmD4YWPeu0CTfX9Uh\nZt2kIIJJMz4WM/XWp6cjDlirgr0KaQfnXrLuY8Uh6Hf6iM3wAAINMnhrPWK/\n0MxTA27HtmyBdbobpOt9UcXYE4HKFo2Oq7x+k5dk2dROpDRHzhpEVQs1sEw+\nzYgyVrOsLjGMYQWROTGrREhxygB4N3X5qX+AUEqZJyPp4nhEcfrdUALLdXLm\nxMqj9yDMaLoosa7nMtqt8MXw0wqKll+SIvCRvS4M8FTd7EoOuRF65MGi4GpA\n2u0/vsBnzpNFxobcAQQcdGFy8O2OuVPl59YevIw+kK3wdSj4ol5XDfkrfWQk\njBofGdJHyRuBfLFUAs4ZbwjNQubUdb8zjH3pstZixY0n1sZUtQxYKDfwmeVq\nxgyCUWDpB//+6MpZ96FkL1JWJ4K8J3OjAZBfaClJTaW0P1tOI6/J1eHGNE5w\np99S+2rEjmWBp3qzCNgF3RJHkx7PrlqmW6xk6P1OtRmnyJHcuiiB9tONRdMT\nKSsRQ9Jfjn1WWFhQDKmso3d8MuhnVpYy7QOcK8F1wBIF3NWenW1NdTykFw2y\nNe5iPYdXes9K7N44EVcotaQbOdhRCMuMdURwW39r5u8CMEokwpAzS04llV1T\nbMPu\r\n=Fzj3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2vv+a2Y5e2AjBam1ygVxsalvFpx+4zLgD2LY1Rp0QwAiEAiJI9j3V38BlRPCZO0PC7BEXKaRwAzLny27zNt83fXvU="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615106057.0_1615106889566_0.02421925952040027"},"_hasShrinkwrap":false},"1.0.2-alpha.1615128697.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615128697.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615128697.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615128697.0","@energyweb/exchange-irec":"1.0.2-alpha.1615128697.0","@energyweb/issuer-api":"0.1.4-alpha.1615128697.0","@energyweb/migrations-irec":"1.0.2-alpha.1615128697.0","@energyweb/origin-backend":"10.0.1-alpha.1615128697.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615128697.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615128697.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615128697.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615128697.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615128697.0","@energyweb/utils-general":"11.0.2-alpha.1615128697.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"0af9c0eadb726bb9cf404c928f6831ef2be9ad29","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615128697.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-+viQ5+o5/lxj4/hcIAZc4KySiQphNJD7Mg7NSopsF7n4sZGByUpPXFdQbVb3cQh/ILrRPyZkhsDUiy1+h9mG3Q==","shasum":"d1a88dbc013382ddbd4d4d4f08840a2416897e99","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615128697.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgROx2CRA9TVsSAnZWagAAJkcP/37vkKYXhl3icoUhbzNd\nrg3no834HUqd0kJf2mR9DrJYMQlhMdWZTU0owsLgsL08IaBsWRzifr5RoMBY\nlJAHxnrfQUduKKZxPqvLcynAGQCaw7C9YQ84c9qJ4Nae+wy3UJeLq3ry/6op\nMyji6W6BwSB9gIqJbwGTkMtoj+kxEftyNIr0IWB5B/geER4NK3Qz/xZPv6iL\nN9BuCJp9t2u8MfkPPVQ2hGvFp51TZkBiLuhuJgYGiF1HfVy5dR9QLPm4F84J\nOyf84jg0HnJneDBL1yZ4Ac8enCofRatYz1TM9nm/8xS5/PQdmEmvptqAXTZw\nFp+tbcs8c3bcOv0QHtlzLRrjkNyMT/jm0FkmfGF9ywId2GiKIRZSP39fw6vG\nZftMy+x0jAqtN6SEoUy+nBuyewdpQsEmxCzZlgjNW6IUm1XAqsBsjGP49JjN\nbQNYyAznDxsH8SepimOLsY/aVHfrG3ARi7gyevZZ1Y+qyjmf2U7SDo342lF/\nIcvznWp9sWX59y5P9UbidujjHZmY6ExVLRjNbl4do5f5Iesn1RlZ1gl9S2B9\nkkJJTeEwrMD5jR6J4MJrVZhlrxOWgvmMaTWpQh0cuFqnJbrx7rFQROimtg4D\nchmlqUht2pbjAHVmQl4sDW9/0q3oFDlOHdxhPMD4JRh/R+9o6ik66sFvZBqw\npePw\r\n=S5y0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuhLYQPjlzhiuMmnqpXQX2eKGjuWcOti3RPxCILrZnTAIhAO4UHDwouLR21oh6wc1ESdw1ZWsyi6K4mfSiP/hOHovr"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615128697.0_1615129717580_0.46314483534608475"},"_hasShrinkwrap":false},"1.0.2-alpha.1615134610.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615134610.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615134610.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615134610.0","@energyweb/exchange-irec":"1.0.2-alpha.1615134610.0","@energyweb/issuer-api":"0.1.4-alpha.1615134610.0","@energyweb/migrations-irec":"1.0.2-alpha.1615134610.0","@energyweb/origin-backend":"10.0.1-alpha.1615134610.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615134610.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615134610.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615134610.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615134610.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615134610.0","@energyweb/utils-general":"11.0.2-alpha.1615134610.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"16fe8fcfc1ef4314aaae603990e44a85e89a4804","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615134610.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-mVVCSGSaWC1113ssEFm/jIen8/dfzefYZhY8NkLW0b5cG+movQ+FSVZoQ/ux+NYnLPKGd4QhemOpuflj5f420w==","shasum":"6c1fd1249390c445be905bfc0767e268681bb445","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615134610.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRQKwCRA9TVsSAnZWagAAG/4P/jig2xYMBRX2OzsYqc5e\neBViKgUeSuAxXK53V5bQgivX4uAZohoUD89B942P8vymxkAz6/sqROmLMj8G\nlVBzD4C9zYaVpCWxJ701BxIRKzFngMQnsriACISXd2og02AL4LPrgQCYgL9V\nyFp4BufuM6plCRJdlgVXpy214RsjtU04qhFcO4CWtCTqvHVnaWUla79l16KQ\ncQoCmndO6ZRbOkEu80eJGHdPSAgVHTOorlHLBl9UpXY/iccGcmeIiQLE8Ekh\nHfUOntdLOgL4ZMUyMR6eWmDxj+shAGLycH6x7XkZpQr8NONrqefmvMbmrYhP\ngbhb7iQvQZimGJL8DgZcg5cxENFgxhUL7X2g8Pn1PaEAhsrLDA3PSQW7CgJC\nTaEFwtkfUKzmzhVGKycNacVBapyPOcfvpv5PIbfwsVXwd20iN313tysvZDVB\nDSTspX7fkHb3WOMQJSfsQR5z3M7UkjblAt+gtWuydFR9nRrowPnKWxfCLqoh\nOYc8Ojg6D/KTGOVbsz1G/TZEKT0WDhUkFoy2dqxhhfzk+/cP/IbCDJcFzbSV\ngp0VfvNHDy9vybeOArEG8fZ4C1SiUEK0FnLnM8CYjrAsFNk5ZyQocZ9lLoe0\ntFOucyYe9untPaAGog/XxfS0sb/OlVewN+o1sL/n3yCHOIY1H+IpCbRab9FA\ni04n\r\n=f6SP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhB78uV5MpMBSyXFJ7Zr8A3o0kUEUitdws8rHhQ93i7gIhAO+xnzLA8wb7LqljPyOMcbf8R7H7M3PWTaKtwdHOS7Rs"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615134610.0_1615135408051_0.8566152428492919"},"_hasShrinkwrap":false},"1.0.2-alpha.1615148139.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615148139.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615148139.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615148139.0","@energyweb/exchange-irec":"1.0.2-alpha.1615148139.0","@energyweb/issuer-api":"0.1.4-alpha.1615148139.0","@energyweb/migrations-irec":"1.0.2-alpha.1615148139.0","@energyweb/origin-backend":"10.0.1-alpha.1615148139.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615148139.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615148139.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615148139.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615148139.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615148139.0","@energyweb/utils-general":"11.0.2-alpha.1615148139.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"db88a649219a6671f071dc01616bdb2b58fc8acf","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615148139.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-ksAYw298n53SR5WIpZjgXgtCpxs+52hDy9XwV5IhunocibIbhAw2+gJhPisvh17M5f4B7e2MdtOJDlcAoD3A3w==","shasum":"49e07b8eb0b964b592ae8e8dcbd4c540a59ec8bb","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615148139.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRTeyCRA9TVsSAnZWagAAYlwP/2fMfutf8ex/V0PrudqV\n1ehnVBcRcFFxR8onQkEEwm/+iQ8gDxoNXTmH8eGPn9wfdedHP9fKtp1takw0\nPHyX2EsyAkHCbKnhlR/iSB+BSrWRYJYj+zI2FAVNVMX7D4eJsayo4x16UWN+\n0RBNmzKfXsp5F8aRFkE/KFHF3Y3n5g4C/8zgbs1ErfQtr8brSiUAHx28kX0w\nqnwfeKlT9ZxqVeMcImWL/VfGJuCWYeCQTXX/7nu5v0CAulMRW6p09UZcZ+xp\nFB4iGD5IVoCskfrAMxOX35sKLiCj3h1i40QtAozSCrnWmq70xbzWjvy7iW9l\nQ46pLe3Bo1INWT872vGWLCm3qY5Y0jC/FISstbPnM9DH/A7mjtqQT1UBNrNL\nzjz/Zk95/kvxz6BcREM6m9ofkJjJ6jJxrWoWeWFt/geYUjwrl90ZNwyC9jI8\n1t/wEDNbICg7AOLvzAizmeunDj3XUnP2tQYFi2K3FP4JAB53uD6QOfImKk+h\n9ii78HwCf8NnPhzY69IyUpwcrMIkt0vZviYoWS5j5cn1viZRH+l0u9wieouM\ne1dAzsUrepqSZ+404Kz+fxnMCFFjPrkWbXcdE8qCOLVATAUEQlfXrgXvzpiF\naFnWxT4KHwgM+Jdu//ERGgGRSHuPrQNKdhwsIwA3g2sV44h/9EdPS752W/hB\nx26d\r\n=v+Wg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/wusjUXcmGld8bdBk434TFMwBd9XLFVY3BO2zxQQonAiEAsjtEvxDXeRCnV1W1EFhy0nup3L+eG8IfLvDhiWfoWsE="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615148139.0_1615148977999_0.6534190751392963"},"_hasShrinkwrap":false},"1.0.2-alpha.1615153627.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615153627.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615153627.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615153627.0","@energyweb/exchange-irec":"1.0.2-alpha.1615153627.0","@energyweb/issuer-api":"0.1.4-alpha.1615153627.0","@energyweb/migrations-irec":"1.0.2-alpha.1615153627.0","@energyweb/origin-backend":"10.0.1-alpha.1615153627.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615153627.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615153627.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615153627.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615153627.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615153627.0","@energyweb/utils-general":"11.0.2-alpha.1615153627.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"cc7039138ba583837321215d7362fda9f79183ff","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615153627.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-PsdTP98edAO/bJbfHsFBURqJN7W4Nsw25em2PdGjF+aNDuzWdW9r1vSxm/dxkM1D2tuPulA8dJ8CrkOj5rf1lA==","shasum":"4b1be56f4960145f335af9cb39f4bb8ffa1c6002","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615153627.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRU1jCRA9TVsSAnZWagAAcSYP/0lQuBZD7UfuKUEXQG6+\nvw24UBga4s76ZDgbBkQUrU/I+RinepkH/NAMEVPONBk3y1Oc+HcNOtkQXe9d\nwMe/qtgpIDkC62XJe+1djDaUwMrhMl3QsmBx4sXYfI3UsALWoZ8sxkH5Zm3J\no+lIpFTsNDU9dxjWAXiHentMHedgOwe8HigckrBFyGA0N9zI3ObhZanjAM04\nYgdk8Wj0autYmFm7CVyrNGW3F+1fJz3DN8R9vKlDNaYFW3Yc5cVf3qeo48b8\nYyY9QDuk7HYZb7jh5uNKwtPACQIQk9Bm+BV8pL7kcXU+cbyrTfHyMnnc5vv4\nlFOuUD2iL7QjiWZZ3sSgTIQjr2v520TS0sr8LuC9klIvgOLwYo8RDCOrN15i\nFiNMLtPyWMep6jyN2sBNDx8CHOUZwwIOcUvh6I5D5eeRACekzb3b+f/IIOIb\nWpPTyuh4bqkGrgWkaVpDNBFjH9sptO+BDkXqsBdMVVNCoUwxXeyDk97LXAGm\ngGg6XvG+0alr3eOGfUIoi6xVDiyl7AJ0uZjuzSblg21/emqwmyRUIN5WCo4F\n045PIaVoNOBp6SvoYXp+CynfF/aPip1Wz739SlMqwUCGY+0mA/kKvSFiJZ1G\nReO6bI4WcySN/4iQghFf30EK62JH+eU/DXJ5IfdwsFsT29Z0g3l20BCq/N5K\njG90\r\n=CiVO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAq2mPoAb6ya76ypAFD/jqBXKFQ03GnUh+pm9QMw1hYwIgIS9p1u8P7to7iknsvErC5btXX1tUPYde/JTAQEzTOXg="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615153627.0_1615154531353_0.12079393433613106"},"_hasShrinkwrap":false},"1.0.2-alpha.1615210318.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615210318.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615210318.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615210318.0","@energyweb/exchange-irec":"1.0.2-alpha.1615210318.0","@energyweb/issuer-api":"0.1.4-alpha.1615210318.0","@energyweb/migrations-irec":"1.0.2-alpha.1615210318.0","@energyweb/origin-backend":"10.0.1-alpha.1615210318.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615210318.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615210318.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615210318.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615210318.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615210318.0","@energyweb/utils-general":"11.0.2-alpha.1615210318.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"ce2037d7bd111caf6c0e2334a68a721954d23a99","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615210318.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-1v2oGHhtUkDMpvU/PNs0Ap6xlCsuaAxvheqacQlhhilWN1W/0w09+8EeJZd0CfucHGBSvgL6vGcvtYMECuPqWw==","shasum":"b7f09f44c018cbe2fc4ddb597d447005b8ae62f7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615210318.0.tgz","fileCount":78,"unpackedSize":1544405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRisUCRA9TVsSAnZWagAA42AQAJSN8ohV8bOfMDQbwSes\n0ZiXWUCU+5iCUz9Us8sg5dlIRhiQKGAK470dCglDBzFE5rmYyIMjqx2PsiB4\nKYqExZLRTpM4TcurwiJcUXW8oPrhvXf03wJT5b55X+fdQhi4wtAhdASdQUog\nICVno8P4Wjbki5QwMDx4/a2AGurvGISxwacYy0SHvZerCi4Sczyc+kyLe6uy\np8Akj7TeHDSozZlqXBiVY02VfdAiWLFbmaPg6qgoxR+slygEnWCPERwvGaBj\nZ/cdFnCvVirrC4Ce9huaUHBQcya24kqPysA9N+sHY6BYl60aMPh4wkg/Cs5q\nvsroUTJw4V0TGadpa7R26pCCsb8abj0RTgnm0bjme9nfHgSMVfWvNu14c6xb\n+44AGr9Y2k4luGSQY0xrOZP09cYbEpOeY3c6mNNFjWaf5ANQOn8qQifh6svu\n27lf/haGQBPJ5rijO1RdIV7HMY5U8p8/jnIOPPaK3GhJD9MPbXRr6KzcRMBR\nCoIuivJHh2wdp4ZDrMzepVMdpxLm483ACC3dBmzDIkFQQMvxXx5EvRd0I4w8\n3Ei0HCYStxWsaP7hcVhIYKC4JrltF1pvU85H7009qHr14Y6YNMwB34W9Gd1W\nEzV44RGUGUJ3Ltja65xrqok+43IWY8JfNpjEDOaKXZGWhL7PYA+2+mYgWUVJ\nsq0a\r\n=u3LB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBErpsbli7bm3SyOEpQLW8Ky4J8DMo9OVqtgJ0CI6HzQIgUX151cYFWZThAQZ/OG5O50kamXEHCkPU67h49lxQJ5A="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615210318.0_1615211284299_0.22162156155087764"},"_hasShrinkwrap":false},"1.0.2-alpha.1615223959.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615223959.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615223959.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615223959.0","@energyweb/exchange-irec":"1.0.2-alpha.1615223959.0","@energyweb/issuer-api":"0.1.4-alpha.1615223959.0","@energyweb/migrations-irec":"1.0.2-alpha.1615223959.0","@energyweb/origin-backend":"10.0.1-alpha.1615223959.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615223959.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615223959.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615223959.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615223959.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615223959.0","@energyweb/utils-general":"11.0.2-alpha.1615223959.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d7c7bb9aea5977696437615437379ca088bf3151","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615223959.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-pkdPCbCjusLzrJQR0V97XtwJmGMgMJzKJqjuxelrsLcdQT3XyM+k8hSI8Zd3pB+TL/DtWi4pHGZ1l5jcdEUFoQ==","shasum":"e6e4b3e172fd3ff9f4259eed563eb7daecd80c65","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615223959.0.tgz","fileCount":78,"unpackedSize":1547766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRmC4CRA9TVsSAnZWagAAjoUP/37Tv4Cuj5dgQNGAAWRQ\nIwG2bpo0rOXG/RDeyJAzyNSl2ZmCdlobuskg/q0tWB3bKzyKPmppXWXS9tu6\n7aP5rYYp69j1/YNYgNuolaHqzYjBCYRkaHdMJG4Lq181Hft65WURP09bEN2z\njZTvWr2g9Z7e8U3xQnCcnXbtrwVBRkssmrrPNVjVyFHVULsKfUznt99Lv6PL\nbZuSddugNUPUAjqV9IwGUrsVsmsLZ5ab1ipkeS/fRiiKnxGjicglaB4lcQ99\n3viQZ3er1jLCF8A6YEHkm+M+vgcnX7jsbrNcvWj4zMbrvBhHmvvvVVddoG+A\n0KnR9vX5bnCz3DxothYg8M0rAb4PJvO9H/CqS7ypZzWea4hcX1Wz+aMNEEL/\nzpW3gYb1Li9QJBeT703mdUvll2goVaInnqek5aZW33GfcIds7CIRJ4vOvm9G\nQo/H4qiE75epbqnF27iMHiIMMx43yznvdXq424e367twiLZV3oWXkKgob2pz\nGvGOx5GorbOCdTZfN21GtaJdJ6ARxjceEVNpbqG7Or7KmI9fN9CMt8AEQCze\nQ3bWic7/JWrNqzOPG+vHduj11Fl1WlVrT0Mtdb+qXfoNjSvC00GxQ7ZE4Jm+\nz8XV2duP63usthDyG1e0NX2cKSJFZIHzhyYHzS00QsHHT3b67ua5LQiOMvDt\nkTI7\r\n=Beg6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIByAaZ4e0e57dVjb+LmBu57AQp6r4Wp+vRnzPur9Xa9AAiEA2tcbKBKi5VT77dSHs9Io8mJbqCLASACtXrjOgh+ZM14="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615223959.0_1615225015814_0.796291419630871"},"_hasShrinkwrap":false},"1.0.2-alpha.1615227897.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615227897.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615227897.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615227897.0","@energyweb/exchange-irec":"1.0.2-alpha.1615227897.0","@energyweb/issuer-api":"0.1.4-alpha.1615227897.0","@energyweb/migrations-irec":"1.0.2-alpha.1615227897.0","@energyweb/origin-backend":"10.0.1-alpha.1615227897.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615227897.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615227897.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615227897.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615227897.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615227897.0","@energyweb/utils-general":"11.0.2-alpha.1615227897.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"480a53bdcb186afdd461e08ca7b53e29e0457ff3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615227897.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-rt2o76tp4YF5gYmrO3XLTGns01/hVW8xyM3jlN80NaNhsbOEyPyInS2nPED9J5+MNslogE3xNH6hNrcA/45OqQ==","shasum":"671729ce19ea7fd8cd9285445622891b40401784","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615227897.0.tgz","fileCount":78,"unpackedSize":1547766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRm9eCRA9TVsSAnZWagAAPpUP/2xRu6i/nZo4VcgI2K1J\n0kvCyVMNN/dJkxBvelpw1hlxCjhWK7uN657SZeLHQnBYIgepZfyIqeyMWT2e\nd6CqTr6ExjcSwwJsEe2hlhksAYebbg4gpMh42U/L7odgJxdLyenBk7naWWeM\n3VaSKNE03bO3t4QYq4LfG8Lv/LWJVK2eZiM4/rvXhctfWvtXexeTJ3KZyde7\nLAXrlnED7Ua0vojn6cckB9NP/F7bWkWeP3bOXxIjc0BA/Y3eZ5e69EFu+abv\n9Q6yY74SxMVDt/lR5Pwjfroi4NJxpXE9dNVM8eOB1vMPYWmbFcdYE83sOxSN\nK3V4xczk1Vx2ho//mTCj7KasV7ivu7dGL8Ie0Nnbup9RQtyS062zfj3kSr3R\n8WTnhtDwRygu7ztsQP68j1KXQ/3Jerro6MnXhWotXfUrQkZab/SKthXrVKkT\nYFtl5rD/fxHKSZcXeWC6fzL4s6LCJtCDaDWfU3yTmtjJNe/+VI4gog06Coag\nSEqV/P6EhOop6yRd4KSVtntLqdmgdht5J8B0uZByfYPqKZJlICplcItTkxeg\nFu0+OQFEhOrTeKlcmb5FOGBiyFO9SXuqBwi2vZ11gBOyBCG56ixsZpq7wbfA\nFxtbpG7VT1VbIVelbbZlK6IMYxskj0iBXtBYlT8U9Z0izzm/j4wN1u8GyTWC\nIZd6\r\n=ZMEe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhvCkiyI3S0cjzCHM3VR4XZAFMIWn7xZOB9CStT6xx4QIhAOzYBLBj21YwaNBTqzC+GYdTtQCu+OlEC23vybF8QmRg"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615227897.0_1615228766474_0.7674972538625744"},"_hasShrinkwrap":false},"1.0.2-alpha.1615316029.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615316029.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615316029.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615316029.0","@energyweb/exchange-irec":"1.0.2-alpha.1615316029.0","@energyweb/issuer-api":"0.1.4-alpha.1615316029.0","@energyweb/migrations-irec":"1.0.2-alpha.1615316029.0","@energyweb/origin-backend":"10.0.1-alpha.1615316029.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615316029.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615316029.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615316029.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615316029.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615316029.0","@energyweb/utils-general":"11.0.2-alpha.1615316029.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"63c77bef658c26a28e7b876a4ad917dc4cd5194c","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615316029.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-eXs6KPnIPFO6OXmhVOkQKMVhGoYiqp8icRTgWSLrhPpPmEYo4ip87rpv56QSOId5qFa9M8FbZFvbt8bgDngJmA==","shasum":"f7b7500b052a728e9c6a3e541e5d15c9092692a0","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615316029.0.tgz","fileCount":87,"unpackedSize":1574466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR8e6CRA9TVsSAnZWagAA6UkP/iQ087WGyOYzcvH9jgVj\nArFni9yBAY9/wm8m7XoaU1IN5wCvji7jtJ4xDIuuNlb661XUeZokeJMogLYx\nPojgjsfl25QG9tvbnvMIm1LA06sy9RnQWLD4BOR76JWkyy+dbwiqNG1pOUP/\ns8nqbWJUD+etAbw+WlvbdyH1SHUuFc9/quwEHYJSStMKeKvS4zyAeCCJpffu\ntYe6Uzliok9PiG+YmyTcbUnWwaEllMnHUr8e9pA9Je9GsnGJqxcVWwLTyjO0\nFrZA7vLs4IblnHANv0cSpetL+OKlN86AAWtVzvzhmI3ZuhE0JuKVU8rHVmx3\n9RReDh26vG3uG6eSJLrbsucLugF1/p3ERu7na6Px8MJjugLJ3gMJfzxGHqfm\nss5ildZsZVbO8Bn5IyBC6tM0kyGCIPo6oSkayNPhLw8B6Yj8TFRCeG4MGoGa\nItH3QaxaSkJkoDbEMNJKl7d2mW0SSKTmLz3onO7pFNAxjx28Xsr0OHkYCrRS\nAiFu2ySvC0CTlArdHl+6VeoIC2DNUKFdBZN/o0k/Ip3DnNP20XAQek4p72Iu\nXzNbhKLYntqYMj8AoE0p3uJu9W+CvAw9Y4n1gnscMf5YHNqZ7vqZFovZHIeF\n1lqaKIJVHXqGJROSUhjmV+rBOD3oli3eX6gIL55AFKGtUFyqLmulwUxutxmO\nuaIn\r\n=K1T3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICngzcESXnO5JsVKFhfB/JKhwiTVWAXjaSODhw5vZ9DCAiAp3CeGV2XUHzHFx46UzCpk2J77qacqTqk9c/de+O99sA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615316029.0_1615316922243_0.916737384047015"},"_hasShrinkwrap":false},"1.0.2-alpha.1615404449.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615404449.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615404449.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615404449.0","@energyweb/exchange-irec":"1.0.2-alpha.1615404449.0","@energyweb/issuer-api":"0.1.4-alpha.1615404449.0","@energyweb/migrations-irec":"1.0.2-alpha.1615404449.0","@energyweb/origin-backend":"10.0.1-alpha.1615404449.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615404449.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615404449.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615404449.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615404449.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615404449.0","@energyweb/utils-general":"11.0.2-alpha.1615404449.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6218fb1f170d67b3d7151826f26d81311ee50470","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615404449.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-q6nte0EMUnnwiYOnYeI2r4vBx3ih8WXIY3kK+6ahNmEWPwiI4QI2jLnj+bS7JaZMMIP6If0bsCg2RbhvJk/f8A==","shasum":"789b7d82aa11244835d41c5eeec7411bf9033d4b","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615404449.0.tgz","fileCount":87,"unpackedSize":1576532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSSEoCRA9TVsSAnZWagAAm+EP/3Tz9nzyGXA7Fq87f/lk\nnenGtmIEBSeYefkCCxkEI9OHkwvEDJNmS3jjZDUyRWJVwobH1j87LQ3yUagg\nvieLa5k9IGmIE/cBZSK7Ezv++/2TT7ZqZstXdTOjZidhsKzpzDEfryPc2hYi\nfoubMvwkx8eRp8bEZnP3r2m5PWxSZP3zeFLhYtIZuPimjSDj8/N5+ZBILTeW\nlmlvsJq10QnO/8AqIHn41l/Lc9f0vRVsq64JfbNrjdYOZTx36YZnETPEKn9Z\ngXiH+3Wl4uoIF3o4+bd9YSWcj6PVnyaJTp0cauu7gM/QI90dlDwK6PWftAeU\nTq6QR6KaEUzPL9IAI/CqE27FfZ46faCcpWsN8reXrw579wcyhEhELfnd89bx\nnjG4MS4rF0fZ8xeFTtYVSPNmrfvxJHDCelvh1tHg+onQST34vGyjPu/Mjdlh\nOBnn2zPLaWi+sT+c71Mv1QOZLDQohxhzgntIHYLdJhT7L3K/U8cVz7qwHYqH\nzxmKOufN8TZCW1dn9kXTAHq8vWkt+Xl1U9P7mzY/jchppJYTc5NXotQGI0WR\n2sfiLciBPWvtQpxVlEJSxlu2hVZb9qguron1GBcB822iDLu7ovqP0ufFbFo+\niizausvEkGbQHcireAlISXwqL2UvW1VCGNOIG5krRnv/s/bFDEQzHB/FCEHN\n6AE5\r\n=cBur\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBOWoSgkCLH4StvzwjlbTjtiMhQT8AME0nKUVZnX8Jz0AiABazuRwI1XSAcoiOw+R0nwEy9NSKjUtMmoaDTChZrFuQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615404449.0_1615405352200_0.9269213651320214"},"_hasShrinkwrap":false},"1.0.2-alpha.1615457332.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615457332.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615457332.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615457332.0","@energyweb/exchange-irec":"1.0.2-alpha.1615457332.0","@energyweb/issuer-api":"0.1.4-alpha.1615457332.0","@energyweb/migrations-irec":"1.0.2-alpha.1615457332.0","@energyweb/origin-backend":"10.0.1-alpha.1615457332.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615457332.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615457332.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615457332.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615457332.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615457332.0","@energyweb/utils-general":"11.0.2-alpha.1615457332.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"21a3a60ea2c80550b5592acfb24f9044c7ff4916","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615457332.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-sPgwpl0OSz5BMzL9iDir6yOHTCyTcSadTwPvIlGZOhOwyW4XNPnDDT2Iz5P4dJZQdAkw9K1nSeUopwtQWceCUA==","shasum":"0c0f8fdf8d590313d5de339822ce88ec1c2b15fa","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615457332.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSfCZCRA9TVsSAnZWagAAJDgP/igBkRuNbdzd5jFNhxMP\nUTUbl2RXffu6uejRBnSTJ2KeiGem63kZK9FmYqaD3lGkAmxCHJJVlewowso2\nrIN8R1NTBRUvMYt7Fld+xr8DXdwqvcQy+gu0NIaA+KqAAfeclOqe97qT1hq0\nMWzJlNCKuklvpnYkN3Nbwv3oMj73N9qEQGcnH7PQqXgO2TeyFp07hGHn1SpS\nNfmZx4Oz/XJ1TC2odoB8Jy19itnTwu22Zw8whJXLSD68t5ufTt6OJ5zpBRNx\nKEIPppPkZCw+hpM6uDS6Yji7imTOuV6c6cCFBwkuiNc/QrzwqakhrXdoNZbS\nZETPqLPBKmQTFg06B7yklmsYr6pJFbmk0bYluFJezsi9WZ7cKEhbJV7HaH2h\nC77BLwQXehLd0Jf9JQThIJU31y3cXUeyhAlQKnvtYo8itkncTL5oN14QfeyE\nPrYXQSFk3J1p+FZY7ei7rEu/qUhCRRMO2yaOts7w75mS9Rh0bclNJ0prTK7f\njk9zilsO/yAZ4yrVilUcfGA1wOMC/nZ9s5k0xjRTMRlRfx386rgopSCBYrR5\nWoMI1ZgopkEaPNxhRD/eWPxCT5mYynenInuGTYUtdz2hiYhMM3KCYZDtO1dB\nR2Na3tu/hhSfmT4WgJRhp32mpY0OLMNfu6vsDjUdT8tkYZ4e0qV7cDFz+Dee\nvlt/\r\n=5fVM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC37ySB+eknNh4g4lM2MEUfmJrSS+Py0EMUCN/+poPJtAIgUnx/vri3GfSGMzOW5fYdkX1i+U1E0uDJlS7ZBrHNMvg="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615457332.0_1615458456861_0.9161831389691661"},"_hasShrinkwrap":false},"1.0.2-alpha.1615464475.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615464475.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615464475.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615464475.0","@energyweb/exchange-irec":"1.0.2-alpha.1615464475.0","@energyweb/issuer-api":"0.1.4-alpha.1615464475.0","@energyweb/migrations-irec":"1.0.2-alpha.1615464475.0","@energyweb/origin-backend":"10.0.1-alpha.1615464475.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615464475.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615464475.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615464475.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615464475.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615464475.0","@energyweb/utils-general":"11.0.2-alpha.1615464475.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"48fea9be3aa1a7909969468e3eb6310a1fb32dbd","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615464475.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-0SVnnGe40WxdKL/nMe9c5c/tbOdlExhQBqLx7N02ZIVI4Cehio7Gem/u9e9tNDYwWquWXA5SeUm57axiJPsRRw==","shasum":"15360dcfc3c8f1f16c66b11b1b6b3cfddee83f40","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615464475.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSgwFCRA9TVsSAnZWagAAHhgP/RoAg72wST3CiPyh2CNG\npBxvz0TT/tK+ajzBB84ni0ZDJwSlbVABFFMgAACzkqUgG3xVlCgZ6OJdd65I\nG1fF+bPxBiMnI/ljmf5jhe3j4WiMX0cPLUgCJxLuqyESKDu4g2NMrHj7o5lZ\nkqEw78gDiS9Ezj/q5J6NX1uu4cFsZQxqArc6dPvcjR8xBWbvu2/1dYV0ha7N\nwdwVds76ldFP3H4vmuWUy69p8BxpbML+FofsUWB9eE3Iqfzt5/NcPT4cDjjD\nfRsHd6hzPy8QHYEWAY0GVlTUKSXNFJmHQXfo1pQn3GxOIobKdlWOn+vRGhvr\n5I4LZGIKchPPJ0HyjL5NNsev+2p8/fA6+BxEBlA+IOe6Vuy5uGs27fog6HtN\nkwJgtnR3IaQulHuy3arTnmx40Q6TLxCNK+aS4AmBPENR61IoQ/lGtj9tOlnO\n14dEO39scUVv4lwly7LMkpm/jBUJVGFjEyn9qpUZems2lESpcjSA+3TdlxUK\n9L8ITcLPwFs1ia11ifskEf8dLAkUurruYsfPFK98h8X/7NwBxv8x/GXW7hXI\nvh9+zUtsgrjL6K2jS6irtGN23wYZ0wQeBejuynUS6e1EJBBAS9DzDPm2+16c\nlGK2Q6Kh0hxNQ4bf3sal7vGg2a77JWul5r1gvXvHvoqOAqs0//B3eyDTG8Ny\ngoKd\r\n=e9Ki\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChr6mBLcK8OAOOYqMWNJSV7YMUmfyH3XBZMrGG0a28DAiEAxi5uj86erMX7O+Sqs0wwU58hZcAcfrwhQhI4bk5eubM="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615464475.0_1615465476599_0.059767855875357156"},"_hasShrinkwrap":false},"1.0.2-alpha.1615471175.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615471175.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615471175.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615471175.0","@energyweb/exchange-irec":"1.0.2-alpha.1615471175.0","@energyweb/issuer-api":"0.1.4-alpha.1615471175.0","@energyweb/migrations-irec":"1.0.2-alpha.1615471175.0","@energyweb/origin-backend":"10.0.1-alpha.1615471175.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615471175.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615471175.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615471175.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615471175.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615471175.0","@energyweb/utils-general":"11.0.2-alpha.1615471175.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c96cf40c101ca7daf611ddb288be48d5962b4326","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615471175.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-MbPX13RB6cbxFjUXuk6avPTm+7CbASu1pzKkgzwd/024UnYsObC+R7wr0UhgpNz7rEfD3iYGKCPE5ZU8/SrFYg==","shasum":"74058c0888a7e3f6b967bf453772de16d06e0def","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615471175.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSiY/CRA9TVsSAnZWagAAfzQQAJIW06a01cA7I4aOcotF\nYNp2SQ4fwpi8UZGAcrESyD/Qk3mCFtTt+nsj5aOpqZunV83HCF4qerFMlShD\nURjvL1wJG5qM1A9BWvhk44LHkn20gtxqT7YEAvORkkzYb9IFH7JaAaYJjf/0\n82kAdoNfH9URIoI644ypXqoNYgVdg6PzZqbJ0U4oyqSnwQ3yWIqI/SkclA9e\nqudTFAnW6t0rE03RFJeSbPRF74X7jMOuWbskUFfgPCtbpmwi9rZfj0fuNmGl\nJy6c0vKYvWIgewpwsK6U2xZSSzqbi38lzk7v60qvMtpHxGdXxtgFNL0VhGQN\n0PaWBV478RxUTNPUi0TaclZcquO4+0uI4eGixNEiXynkVx4G/dPhCZXMCs0+\ntZD009qwRSOSuHUNaE7PR/RfaY0TAFNy3Yo4WSJJv1XmPJEoxKuXzPcId9E0\n163op+N7NkSn4VR4p1NFonrdc5AVxp/z+L1CMH4gknTgn7BYCJmcSj9tt+yP\nnIQ69zo5p3rbhKJoqUUWn4SVNIfZBg+7K08jC7X66jRTNN8sszIEfibH1QY1\n3BJlKxtZMFx2MAlXaY4Zhj8oy/wfAyK+ArM4H6Q39dieezF59jQ7jK3Zw5id\n1Chz/CFhoLqtyN+mmWADC34PdRqS2WnRVYNXVbO4C4KcX4UKwH9seZZQWlqx\n+96L\r\n=jWyl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5u3wyL0ROvRGD9NpgIQkhClkStUtgOp21JMIXLGLpeQIgPC2zkh1habczRVIM017cgYfFk6nKoYxV3pMSSl3+RKw="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615471175.0_1615472190695_0.6133085390707824"},"_hasShrinkwrap":false},"1.0.2-alpha.1615605482.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615605482.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615605482.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615605482.0","@energyweb/exchange-irec":"1.0.2-alpha.1615605482.0","@energyweb/issuer-api":"0.1.4-alpha.1615605482.0","@energyweb/migrations-irec":"1.0.2-alpha.1615605482.0","@energyweb/origin-backend":"10.0.1-alpha.1615605482.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615605482.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615605482.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615605482.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615605482.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615605482.0","@energyweb/utils-general":"11.0.2-alpha.1615605482.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"5cd0b5b95b678dc243a7cba79277c423dd54a33f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615605482.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-MLUW9p2FUR4hDyy+OnrjZ1MKfokQrjpl8bUah5JqrUmCTQsIg7ZsCbLX+kmUDTntzXiyOa5a0R/70vODbtft8A==","shasum":"e46e9127089b8ec2b051e3c09eda7d079462870c","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615605482.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTDLrCRA9TVsSAnZWagAA0XIP/ArEgQJA+CH5BNQmLbWu\nmWv7AtTSIDWLCfICkS2dw6AYzi/axCQMmLKi1XAGH9GKiJtJWu+A4WFTNeTg\nd5qbmbhSrooquSjVt3xA12dKflcmr9U7UTVZ9BClWsAHe6W/2bPkbwto+coe\nXEwUHW61jhtLfMfm7ruo8xH2A7sG4ftb04vmEqYHxHRl3Hve1SC11juBkADU\nw8mgOn/aHTLfhJ9deiWQf5mutUnlUwcEsu09tOqxfCvBDhhcoI94qhViLtbb\nQrEI42lFzS5V7XwdF/mzxc5be85LeNY5bQbDCi5vlMQ8XYJhB5nQ9aBJzAEa\nR1CssCzasAcCMcj06bpVHj4a/yclkLvt+cwL96KIFIx4acB/Y8CbMpCjvapf\nlGLSrvIvfHknSh6uKnPTxGZGgAvIYY5ApSF9BXEe3s4w0nph40zVrTR70dY3\n6ZuXdiz6Njhg7Pa48L0g2m/IU4UETPmtIhgk5DmLFhKZV4mttNmz8xYkZTO7\nauWYU2ATTW5M2RM4IVa4sCcBEGoYvEO9uKXO+QQfLn2rxl/dbIf7K5jCTyjc\nTt/nzIkGrKUasghVzONJ26vDmmDVKvFhPTsMDRWUgkwq/oIfPOSKx+1U+EMs\n9yOI4l9+943m+jvyi7Xhb3bHKogsUH7jj4iZRTrUyT1sVOb5nbatBr+IwXIf\nUlbR\r\n=6grI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5k+uDeBsFxgvc8YtLAgpgkX7ShajqBGaYlZxKXmWGeAiEAoWBNn0FDT25VLHbAYVm9ApRSXSdEZtfgoZ40985x/jg="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615605482.0_1615606507438_0.6089696512391405"},"_hasShrinkwrap":false},"1.0.2-alpha.1615617271.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615617271.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615617271.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615617271.0","@energyweb/exchange-irec":"1.0.2-alpha.1615617271.0","@energyweb/issuer-api":"0.1.4-alpha.1615617271.0","@energyweb/migrations-irec":"1.0.2-alpha.1615617271.0","@energyweb/origin-backend":"10.0.1-alpha.1615617271.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615617271.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615617271.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615617271.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615617271.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615617271.0","@energyweb/utils-general":"11.0.2-alpha.1615617271.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d451e65f5f0f14dbb8950d4aa1f40ba7ad2ca322","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615617271.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-H/E1ZD7/tgWgVq0UykAQAH5oaVmCooVxECB3p9Na5XrI/FFgG2za+SjSEUoj6j7Eg0rgY+6+nx+vZY9BBxdorQ==","shasum":"cb0f043a1fdbdbd1ec593010de8225776478890f","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615617271.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTGB8CRA9TVsSAnZWagAA/WIP/2D1lPY90o6r4iM77TV1\n60O1guS4SXu+xSacEqgJGdLC1BLZScL2K+u9SVzKixrMRJooB9BrGbQQHRkf\njDVOVfqbKCxc6dUa8FgxiTubRitRebCVGqouzgCszozZTVU8c7Sr7tJBauMP\nXum5TwRGeltNZuueQb3u1vVvOhKJx9hX2gyqSsKL3Cw73cMR8e2AU3/ytU5I\nZP9nO/jcSyp1W/wed23QZ/s8zJcp4CZok/G9i17tA+a5bK/jZjvvJOJqMVEO\nEi/rnThKBSkgx8ucXiXSY9JM6Pjf301Z8BRFUsT23wLvGYUScujLVZRiK4aL\n1jWBQPXnhdvQyWFaM8/g5rnPhzPZUY/dyEugmWtA5qhEhdegNACXU0UOd/6T\nMfDa/df7egpgk21ea6X0tzjgB0HM9a8P1zgf2pnVDlsxznxh4pVfXsQkCp0B\nhyE58x1dddQeh1lqHk5GzmolLZ1iYuM7EXdDXkKnbNesXi9dL4CIYtKHxDsy\n0rGF0tIqfSdcaK0GHndwbGmW+MAuRY5a3TK5aJoEB7LvUFiOu7hpIF74Sm23\n4+JvBu5Px6rD7XC5TWQMxONsZG4ilnsxBDZL3EIeL4BzM0kcnPjHT22Sj/ue\n1eujYLW7Q8Udg/cP6/EPsU/B7nZ79iJDqXKt5UTycE27AGSa6c5yOmYdLDsC\nd8Rq\r\n=jlpQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEv3gp6aVRie7N7zXx0icxRYOUZ6/ftM+25f5ALl5kVkAiAnLrYaVm14kptpm3woqkZz1BxYhvWy9fs6OvMZ89bOjA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615617271.0_1615618172155_0.5889461469956208"},"_hasShrinkwrap":false},"1.0.2-alpha.1615626786.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615626786.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615626786.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615626786.0","@energyweb/exchange-irec":"1.0.2-alpha.1615626786.0","@energyweb/issuer-api":"0.1.4-alpha.1615626786.0","@energyweb/migrations-irec":"1.0.2-alpha.1615626786.0","@energyweb/origin-backend":"10.0.1-alpha.1615626786.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615626786.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615626786.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615626786.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615626786.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615626786.0","@energyweb/utils-general":"11.0.2-alpha.1615626786.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"475eb8d25a48cb332eb387874473659dce3b7151","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615626786.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-1C7op2DrSS1zuoRPlmGWt4Y/7nwtLqxoW/+jCRW/Orv86LZLLsF9POYiCluoeX4EH2ohdW87DSrzxVVQCdWfVQ==","shasum":"9193ac12b476ea0bae595150e52072d78ae1be1b","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615626786.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTIXvCRA9TVsSAnZWagAANSsP/3ChIAEW1QpTGucrB4zg\neLUUGpW1tB5ayAKrNKJEwrJwoOXKGuANv47GyNZiGYq6CGTXZPD1+mAdB3+J\nSQJ67SFPCoKKLStR4jN83iNterUqInwpdD0U69SqGAnVWNOPByxxtZr8EEUR\ndn4UuZFOFU3tiMagcvVWtu5j3ayV9PF3rF0DXIvZtTWY0NIbibd0kDl4LdWB\naY0tiYOCgFsPUCht1ozgMaqq5qNd9DbYn5n+ylri5qan/30CIhNF3z+QuQoJ\nokOlH9n6UP/bVzDYg0J28bMHcNkIvu4Z9w3XV+F7wxM7cBDjfper4Ef1pgFB\n9pe1OwJe1cU2OHZFl+amId1iVOgwgYXggp2QVbHy8pbP+xcXuOOM6Z0/lGk/\noq7d2YjqF1rMKD4guznuCqlbmOALhJ0PD6jeB55sKLIRDGmZlAn6ZulreuEj\nEQtSExAMsZlOlT5qbctBgTs6dWCX4wpe4YaMGS95/8WulsOuvn24gSYoBYGx\n7MzXjJp9dgA0u8mPZyHkAyWbR274rwj+sF/Hgf7jpOvTutYmftXCKOi/L28x\noGKgo2V7cTn9Q2SvcKka2iqoDw8F63br21A4pAR79B5RG21tHWGRHAqbGMOV\nm4BTeQgOze2kiM7yIsNwkJ2QXS5YWYL/KTedLmxN0EXhkKFrQAYEqsEh16te\nuJGb\r\n=Tt4U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3drRJHFuRUm9Ffj49LPukn2cdR0l39ZO6fB8Oy0nrUAIgUNLipDdGkR4WAsPgSTJpMIcJVMUgnKL3fF5ZwRN4p0w="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615626786.0_1615627758592_0.41047054187438103"},"_hasShrinkwrap":false},"1.0.2-alpha.1615634831.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615634831.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615634831.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615634831.0","@energyweb/exchange-irec":"1.0.2-alpha.1615634831.0","@energyweb/issuer-api":"0.1.4-alpha.1615634831.0","@energyweb/migrations-irec":"1.0.2-alpha.1615634831.0","@energyweb/origin-backend":"10.0.1-alpha.1615634831.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615634831.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615634831.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615634831.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615634831.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615634831.0","@energyweb/utils-general":"11.0.2-alpha.1615634831.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"f3264852ca0977062bf7b90f4ca278ef7e33f99e","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615634831.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-5LkWer1DIUcELwoG6XMDPA+KxSvhvfLMtudYQFnQLByDmeDrQqZ889eS6+WXD6sKbOiQL+L38P3N+XAoK6lxXQ==","shasum":"648fefdfa49b8e1834a58793e3d6f079aa82bdc4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615634831.0.tgz","fileCount":87,"unpackedSize":1577067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTKU7CRA9TVsSAnZWagAAvGQP/jJbs563l88Qfhv+p4uZ\nVNvE1OXyaIPxZS1eZV82tD/CsDRsCyiEZUqsJBSbzUBhk4I0tFdsAhNsLb3Y\n5v3/fz34IEfM9T5ZY0V8A9A70HCg/pGkcuwGZof7FcB3rMA/osf4ZP51Al9N\nnnlT+rtz9ewoEEBfhTApesNQhX9gTAZX+2R570Opd7RmcLAML40SEGVsbqKH\nlig3Kf2BWGMI26q33OwVf6HOwi4Ee9szfWm0MGNA8IUGvrhjf7DCJnKIdntd\n4zBBDTe82DGJersRcGjJfE8e5+JPxnff+So/6rpmTaAHwLOcB6jFM5rCYFht\nsINDdqNHC3cYORF7MDXAC6cgmVzvk41M4jg14BSkQ9401GccKk3VtLVkWLRc\nOpih8Av1R3hgbGJ/TrrJ8PsTLcikykq98Av6crw4xBSsqKndGNO/SjkSCPHh\nLgKC7IIdXSBn2xSyaaOh39q/Ejiz14HTDKcu4FW2K5jq7Tbe4Y0Wk4wH7tUW\naOYSGj4kyGN9wFGSTxr/Ap+ca1ZCFFIijrI2LM6UHf3MLm7bVhiUf1rK1ahu\n5dZQYdeR+q1pdt5YpW4gW90vYrRoTUTZPRK0Gx6dqnD4x5BdTmp/rF4LrDEC\nZAYKJ7NEtiTF8s1bc7tJQK+swhKRxCeMcWDOOJxzlg3GpUEyd/5pry/OsNGk\nkeoK\r\n=uax1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdrhVq2PKp3lskjV21uUNosHjdr7H6fU4rlDAUrXHsHAiAreSUlS4arybgIDcPN6NHV2hBZJU5f+lJWRkReh8Tofw=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615634831.0_1615635770693_0.6514797795576561"},"_hasShrinkwrap":false},"1.0.2-alpha.1615642128.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615642128.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615642128.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615642128.0","@energyweb/exchange-irec":"1.0.2-alpha.1615642128.0","@energyweb/issuer-api":"0.1.4-alpha.1615642128.0","@energyweb/migrations-irec":"1.0.2-alpha.1615642128.0","@energyweb/origin-backend":"10.0.1-alpha.1615642128.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615642128.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615642128.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615642128.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615642128.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615642128.0","@energyweb/utils-general":"11.0.2-alpha.1615642128.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"b7cba1e2efe678acb9643db79a368e7ae03a4d3a","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615642128.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-X97VfRHMgGtXoYSShlhAPP4k31npoBfJhpF6xm6tEGNCFHdvRixFXTj0z4w2ZIfzdTSCQsc74Q1piiub1UBHyw==","shasum":"a2d0a1bad532c0a6c870efcf8f1c2ecc7a4b077a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615642128.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTMJfCRA9TVsSAnZWagAAarwP/R3tFJW0kF1zEx3gC9NZ\nLHK8ODIG/GJiM6TfSpKf1bxXgSMUswWMeL0pYO4N1YNH4X+NwLwRAid7fsoh\nmw2G+eyAsTz+x5KyIw7vsGdgMOwIdphJ8CnPu/2TX9x6wxVrrl/1BMhpI3Gd\nC85vLM2s1UmgN+Ec8UnOpkqiEoYJlsBcJZpAxmMUFo/bu87a1MI9RX8vLm//\nCGNcgDcnlLuiFaxkhMlAajCLqIV5k1KJkqhPYUrkuD+vvxBVK7FbqOR3o+Wo\nHn7EWU2xXpaHaICBrUrRse8qEn2TDstOqq/tRXm0I9l4GkIVQVehogCp9UFS\n34RMlBZKMs77J84J7B2rqzpDRhuNsIILsG8Yamt4zW2p9AqUNpgvCn51sl6l\na9LEVr+Wt+AZYEkHo2hKPUgGdCjLW3GkGjfr7mOuOZlU8fNpZvIQTA1tv3OI\n0ua4KxxPfHvRsfRAK7WN++AeOBVoFv9NKYG26+CX/Jv7PpBcYv3SpUvHigd/\ntK73rGT7R93Io/hgxQ73WIsHkUUguWi+DqDwQl3TmtiWoWdCJthaPFXZfcvY\nCsy37cJ598GAVW8qeCD73GZMqr+9D6Q9j1Kfgego5FilpVJAxed5N4xTajFZ\no5/JgLrvlO5FVK07auMqK3eeD01apXryPJsOb6OoqEEMoxU2vQdhltJjr8Xd\nEm0y\r\n=QIOL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH20EDsabqiH2Le/dv/Mh7In+8A64dMH9/dKobMIejmwCIQC7OVtNM7lBqh5GEZ9SQudXfI/jOXHfE5ua3YK0DjsibQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615642128.0_1615643231310_0.08158134603498257"},"_hasShrinkwrap":false},"1.0.2-alpha.1615650765.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615650765.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615650765.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615650765.0","@energyweb/exchange-irec":"1.0.2-alpha.1615650765.0","@energyweb/issuer-api":"0.1.4-alpha.1615650765.0","@energyweb/migrations-irec":"1.0.2-alpha.1615650765.0","@energyweb/origin-backend":"10.0.1-alpha.1615650765.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615650765.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615650765.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615650765.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615650765.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615650765.0","@energyweb/utils-general":"11.0.2-alpha.1615650765.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a88f76c682655b459316e43150237667c8a70b6f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615650765.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-40UfMHtE+LGYZurF+rjBDz60UK+5eOae1DvgxxJx1KSAwMxgj/3JlbSsU7dtMtd/0AlGpEfsZ34mLOPHTwa9og==","shasum":"013befa1167969f5c33669dfc81533de8b2c60e0","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615650765.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTONyCRA9TVsSAnZWagAAl2gP/2bI2ncS9BI7GvWiMzDO\nmVkFIn0hv3URXEqn7nZb+PccB+9tAqN686A7C4sawxxTQvJTdhpGbvunS+Jc\nGQveMPQCqiYsHcBoB4k3dy3HiS3SKx179f2b7OXTxfMxURkoOe8q3nzyJKEU\nnFUHUjotgb+niZGM30z2Kg8yLrh7ZzTrKn9pGK62PTrWyaxPRKSJtx5W5k4H\nXe+T3oF0W3tDTXydNv+gcW4xnC6WnoOm+qlo5jYmnNaarrBDce+FQNTW4BnP\nTpSs9yRS6ad5w7roGI9bAGLQ5HXce2G1uMalKnO/DOymf99rT9cjEuRx0Kx3\n352qGDEKKFcF7XJg9joW3B6yP/kP8++tHjK+hITlUSsknLjKxte2G8qKcMsR\nNAFXPJulDQFJRS3XBs1wwTFlLrke46kMsF3rc4Su2Kj2xcN7X6L9n/JbhkRG\nJJufjWL5zutpTSaQB4wJAdcDQPZOeXcLqAEZFO2yvogJRcdvDVOoka4lod1N\np/37xoUBzgiBjZ9no9llIHi2OP+jGojOyjGm+NpFCG60h8Dpn6oiKHe7ikvK\nf261D3O1sRGYLz/4V4wLNhsG2g9eT4y3BQC2NsTwWI2XDlQS4XsQCQjzSrFx\nyan1SQiWGMpU5YMp02MWveGmUEFHeNoWK4sATAw5n0uW+3d86o0WHHS+QJ8M\nOg7p\r\n=pFNi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCL5VPr31A67MPK+81Jj5YIrpxWe3q8Gy9Nb3KYfcpo8wIgWsnOKg3ws3HEEw+On8nwnzzLL1LHPpqq4hbMSwdBipo="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615650765.0_1615651698014_0.2297987131896102"},"_hasShrinkwrap":false},"1.0.2-alpha.1615655248.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615655248.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615655248.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615655248.0","@energyweb/exchange-irec":"1.0.2-alpha.1615655248.0","@energyweb/issuer-api":"0.1.4-alpha.1615655248.0","@energyweb/migrations-irec":"1.0.2-alpha.1615655248.0","@energyweb/origin-backend":"10.0.1-alpha.1615655248.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615655248.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615655248.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615655248.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615655248.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615655248.0","@energyweb/utils-general":"11.0.2-alpha.1615655248.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"ab5bca67f75df012b28c529f17c8b9b47c9cbb88","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615655248.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-UOmKa27rVyyGjJN5mtCrWTLv3gBFvl43JKBZ/Nd8xQcKXVP3q5of6+Jd+90M0FP4U4LgdRojPO14iedNnx+hRA==","shasum":"7dff89197d926d1d1456850eebcba0c51b60f174","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615655248.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTPSOCRA9TVsSAnZWagAA1toQAIVozEN6sqz3oBCLQeXC\nbDvKBE5+b2oxmxoIEQXociF1M/GbA2Yr3docGIt/SEdioWCHglMT+GXYJ3Vq\nGN/5W0s66wuqUUPIKG1qsdk54vnmUqNgtg6x07cwdS+43CMeInV53lZWT3Cj\nqqmvEkXeVrb16bVcbSOOGAUjDZUvPlm4WGlGrBlD+LyKrgi07cPSNP6RWb2R\n35xDqseVkc2fJ1tSRP6hQFwvnNWbPfe2GFknDhVPqp6JmvoT+feSIa22620u\nEDXoweN+redRteVjHlqorOXEuqdWJPuRLp6VWInrwRDLB6crCcIzMnVl1k6g\nyh6sjQpevoxGY2B2zHJLWReXRDJboCb9XxKejh2wmDcaROoyGaiB0BdReZBZ\naXMG2jcTRvXODGhqpPEk5UxOzxjvFuT+52azzfxjbL+dLKEaqrHEvnx0Z4Ay\nEQsEMR54zaEyKgzunZ27XTk3Ge6rp2hrnWhNf7RGb01bN46VS9K0oUyKSZnH\nA7Vm/IbaPlNK7yg/eV/CMtMQrSyqgsnc9PQxCtVlwthfA/YdkLMdjoLuQidr\nu1pcKt9o4Sl6QF4YlTF+cPGN9ARMgg/1xdnQ6xU+KPvtT/rS/Cc9POsb/Lva\nDmEb2OXr1VIh0HE0/gF+D5MEnnVm02xnM59RvIOtDOki4JXTSajsU9lSwvPv\nLDXC\r\n=hnrR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCk4loXvV4E8pTvPccE8PXz1A7bf1sY7g1oedTAUadfgIgOmcR4GPx1Zsjc8OmkEtOkQNG0jowgvtxVtLYTWIy3f4="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615655248.0_1615656078237_0.8675855770167402"},"_hasShrinkwrap":false},"1.0.2-alpha.1615659448.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615659448.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615659448.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615659448.0","@energyweb/exchange-irec":"1.0.2-alpha.1615659448.0","@energyweb/issuer-api":"0.1.4-alpha.1615659448.0","@energyweb/migrations-irec":"1.0.2-alpha.1615659448.0","@energyweb/origin-backend":"10.0.1-alpha.1615659448.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615659448.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615659448.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615659448.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615659448.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615659448.0","@energyweb/utils-general":"11.0.2-alpha.1615659448.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"e35ecab36144d9ebc5cd7dea37777e79132f10b6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615659448.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-oXU7+FkEVcmuDVCOaG2sUXIhrvaQXxMFwWaDCsVDj3LtssmNhUJX0TBAGLsV2XTRqbflI/a15piosf+Kiip2WA==","shasum":"5f674a063f714f647ad7dcd3f642391c82adfb52","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615659448.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTQXMCRA9TVsSAnZWagAARtsP/1gU5r0XecSRxh4OCYJy\nTYnd6l9m2ESF3ege4fEdZzDeGGX72D12hnv12yO71nRufUK2n+W1ZyO3cryX\nShErPS7ZkzdPmDfveMpoZriwP+5ncH0Mjw5raslx5K1ncbwNN0iQjHfUJRyV\n+tRmuEcYoeVWS4gbtpl0HwYZ0ze8cvnB/9bQQqQW6X34CJLb3l+jgXpEB03R\ns5VlG/cucdv+jmUl/LtQ96y6RQ7PoVSkQj74ubpuD8NkrlG5qmLeYXCRkDEz\nyr9dKuEaLwVmtrc92jqfC8OYDcVmUzh7x1DUQ+cv9BdWFtnm9+09toKgQBXN\nXNMF8WIKdRTvrdohhTUDaPQZgY0qTUk0GATp+xNw+yJ2SUc0RO5+TYUQlo4r\naUax7IBKy3rh80ecDCQd+4IBaDSgdRUUsrGtpoQmjvyzXxcWhcX1PMceHkRF\nBvs6pyr0ySC3JO3iNJAkxh8JNtG2+HkL8HFUnbrywcFxsIc/DnkCQdrQBlGC\nZTBaVLLmtaXlRsTTIdNTKEUTqKJDrWhBx4ItR0Vz7p4AxaZoedyrzoiWvyS6\nRJ4b4IGtgLbg7pGrn5ToTbdARDGM2vOZcrVTe+jSWYoLHn7nHarIDlF+OQQE\nYydd5aq9kNrMLqjXWnWxyF3Z0qO0E/qALtA2NWmmxsMoF6D9kglf17Vpxxst\n4Ve2\r\n=wrkj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzsPDYSrmYRALanoRP0zmOHER5FcILIYFGacNgDu17twIhAMp0OfdGiLmRDP9fbY/erBcuaEAfmKiB9BRvQ68yZxFP"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615659448.0_1615660492204_0.40089316507383166"},"_hasShrinkwrap":false},"1.0.2-alpha.1615667082.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615667082.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615667082.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615667082.0","@energyweb/exchange-irec":"1.0.2-alpha.1615667082.0","@energyweb/issuer-api":"0.1.4-alpha.1615667082.0","@energyweb/migrations-irec":"1.0.2-alpha.1615667082.0","@energyweb/origin-backend":"10.0.1-alpha.1615667082.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615667082.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615667082.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615667082.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615667082.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615667082.0","@energyweb/utils-general":"11.0.2-alpha.1615667082.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"99f65ee4c8c5949ec71e2102e35038e3e5761f45","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615667082.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-NvQVAEyMJHdBS86WLfWNMpzWhG1xhmkyjh3sqZqoMzOF7U2iWDagfMK/bBi1kTbrdyhnexmORmy1zAVq9YUw/Q==","shasum":"d5e77c7aedf4b00635f5f484db7952b38304eaae","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615667082.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTSNgCRA9TVsSAnZWagAAhjMP/j0ZJcrFzJA39+yzV1ls\nm8s2p3kz6UKpWzpepVE8cmRseZFWFonaJHV5VuMW2XwihGUUfB0qVsfCcNHu\npK9pHsf559A6h+SbKldde4/8cv1nnwrK5STyggCYp5PTWvhUU2pzIGgHDqce\nO/gmAQqSr5Pz4Cb9iOZHsE1cwy2ehmUpcywq3Ir00y9dE9UvdX5+BkOt+dWp\njag/n1ZQvs2MV/HysMtfkQBPJo0lvOQA96rO3GkMWm6AX28e1qSgBqTDJ904\n/ufaImcDlV5yF1AlK+zjXCOrJI4YOhk5yGkX1X7MPN7t/+7Kt5yjaucv/rDd\nhAaPO2WxbTuA33svNfo7CrLsGSUlntECHwEMAwx6A0MQt1CJO0nVp++GjUYL\nvgPsL+MtW5MubZlKeYofI26hvSasmcHL9QZxj6F+T2oseEtk/45wQS+BpI+O\n8vmh5jiziEtukIwP5QJ1CyO1d+hjo3Z+d9l7wmNjyHEvrFk18m256uhJ/pkZ\n7DcIhvW8rf7AxIyBIgki3GXBJ7L7Wjeq+28JsKSD9RkprWrdnDH66bzvTNtu\n1uRIFQHsRtloYU4bMpbMHcqDZr7Rpsjzu9r7WM4Or6QSVRxe4aQWI0HMUP5R\n2jtpkaAFGFMYvwyhaipVCQe7uv2a2r/v3xHljHyI59uMxzHsCVgRuOL8WLQC\nU/Gf\r\n=s/c4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+KiyL/7vuYbU/mN+T38Xn5dVsqX3cYwfQebuuSxXysQIgdrbM7Nl87FvWzM/LoHgN+ZcY9+bB5XqsYDunO/J4IEA="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615667082.0_1615668063448_0.02463206433159426"},"_hasShrinkwrap":false},"1.0.2-alpha.1615676457.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615676457.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615676457.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615676457.0","@energyweb/exchange-irec":"1.0.2-alpha.1615676457.0","@energyweb/issuer-api":"0.1.4-alpha.1615676457.0","@energyweb/migrations-irec":"1.0.2-alpha.1615676457.0","@energyweb/origin-backend":"10.0.1-alpha.1615676457.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615676457.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615676457.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615676457.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615676457.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615676457.0","@energyweb/utils-general":"11.0.2-alpha.1615676457.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"24d6dc6b764628d9c1a1197e263b1d78f653097b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615676457.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-l3zzlMJ9RCJUcC0DjNY0Urpjpwy4sOWfocudd7BLQzeovZJOVX9OrCAUAA/tWr3JsJYLRnr0+aXH/0XT7j7VpQ==","shasum":"a5774044019bcdb5d75942414208394722a55628","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615676457.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTUgLCRA9TVsSAnZWagAAF8cP/RdXTcbp/lUL1quVN0qM\ni5y8nah39aMy5wqI9km/1QcQu2NP22Ee6FRaenXCq6nYHDbQTEAv056rU6Ul\nzYuMtRybO3k5SdCmDoXBrBuXN0IsYfPGoa/XvFDJMbY25FfDKBxpy3M81lGo\nO8y+CEAfR41cbn6iVxEdCOLNVZghqYH+7IWNMeRh7xLu0NV874X2TtQdo/Dq\noGR4gf8hJp2Zq9vBUSZ/sptLdl+TecadHeda4erDIiKw7xaCm5fRKybFEFBb\nVFQeQJgaFSWNvWdKa3hXp7bi6gwOmgvOOPsSHibjiaVSHlRH2wCCk3jSI0hb\ncl67LEEZoXesBztuAXkkyuAXZoX1vPubLJobypXZTbXde5ohP6QltFeEkbD9\nd+qhshncaLZdnb7r/c8H5m7D6gYjYLtaATb2bC8Ike3jBCAKNAcV7ZdiOgCd\nxLDTpSxCtFS42JW+F626ZVvo7Du7SjctJolc/Pl7rNkYwq8ZLYwmv88vs51j\nUqoBwiAtdliTsR86v+3tP3VynQfaLDW1eOb2O3w2KQt/bLfrVTD6xhRtvOu2\nGb9ItFQAKCMkWxD/jANaDF44FCfKawskwF9WiFhXHQS4VN25z2Q2zTVNdDEg\nq5786gwTHwXxsZUc+Tek82kqUZvYSuFgrSBgsXLgpV91usJBN7HSm3Bfj0Vr\nbMKc\r\n=TsvW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDqUAVaCaNSn6R9ivqYd7ySLyKhflg8LewsK3utlAJhRAiEA8nfAixOsrsN0tELEfa+6dSLANTumkOT/8JZTBjrNwnA="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615676457.0_1615677451393_0.31070310743236607"},"_hasShrinkwrap":false},"1.0.2-alpha.1615682494.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615682494.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615682494.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615682494.0","@energyweb/exchange-irec":"1.0.2-alpha.1615682494.0","@energyweb/issuer-api":"0.1.4-alpha.1615682494.0","@energyweb/migrations-irec":"1.0.2-alpha.1615682494.0","@energyweb/origin-backend":"10.0.1-alpha.1615682494.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615682494.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615682494.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615682494.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615682494.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615682494.0","@energyweb/utils-general":"11.0.2-alpha.1615682494.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a0734a90773a238a5adf9d6275b9ce4ddc0e097a","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615682494.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-MiiIcAjf/kxDYxWKtFIKCGtxvs9dHtW2FMMvWkQmCv9BF94fkv4HZ5w5d7f8BqP+PoxsfrsborxhUMkaeOexdg==","shasum":"1dc27eb5429db837f44a554360462e42142698bf","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615682494.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTV97CRA9TVsSAnZWagAAif4QAIVSegW6rQfnCDTu+qQo\n7mKFRa+/66JEk3g4PCNx27dKGKg5VEJineZ4AxykL2E37/vGyRmMmGO3OHPz\nupehiwFhSrc7+XsNamWtPrMoBdNb3kUNzH2BxZgM4SPmSvelaUEdmNywou4A\nBgSlmHN/IMTdrcLhCjB5HTAyzrqIcGtxZajlq089NyYgN/ZgcJyBG/rOL2cB\nZaqlzP7WZ+ujsPdYrfb3vYZ3a2OrNRIDLeeB0Dkv8Uxlxy2D9bPK0Sb/s+ku\ntOkFS4aAPhuyMdRitHydZgj8RKQfnQJqhNM1BA4XkiTHn/9/opSC4vRX5bP4\nzCLK/9/lMLAKKwthUmuBgTcQ0MEPKLQmZZ/GXKCgZWgB/RiMAOQMiwndp35o\nlc2fAjx2Iq6XtQILDTt/Yb5njW1FV7OVC8m83oroyLKroqdcf6+PblLdqlj8\n0TpZt7eLx/ElWRnypwA8sVG0cOfEBYmt1MeREfu3s6NJhp1OyYqLvIYYskQJ\nzb0eKZG5VUUh/GfI1ojxfTNN/s73qHQUZV/CihKVMBOjLKM6TUZG5JDEABYb\nMj4TziYA7o9cI8AAlXITLIVk1jJoZCZyr0eKqJigJHlcrLA8PSHeWE5AnRQw\n8lOpL/6vR+AM1JxSZE9CfwxrCXLw+RwYsAH9F/tdgozZpG7kUQ3zrDob6PWh\nnJMs\r\n=/atc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEhoFl/rpozYGkNAx9DxhKcVv8tQ0x2WrtdLGjakmfIfAiBK4dOpWO+OOEp8ob18Ewtyw3CE+CslnZQBpsqbzx6UfA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615682494.0_1615683451162_0.17323964619236887"},"_hasShrinkwrap":false},"1.0.2-alpha.1615688950.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615688950.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615688950.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615688950.0","@energyweb/exchange-irec":"1.0.2-alpha.1615688950.0","@energyweb/issuer-api":"0.1.4-alpha.1615688950.0","@energyweb/migrations-irec":"1.0.2-alpha.1615688950.0","@energyweb/origin-backend":"10.0.1-alpha.1615688950.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615688950.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615688950.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615688950.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615688950.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615688950.0","@energyweb/utils-general":"11.0.2-alpha.1615688950.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"903fd5cada4662493cd5f655fc123efca1af3092","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615688950.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-XdsnePGcYSbDu29HPDgPnr5C2DaIC3ZhZTXLLPlZV2PQ6VBNwSVlQEn25ZdGzlQ0HMvlQd2pmfVuy2uq47VG5A==","shasum":"f4f023ea49c78e67f9ef7b36db5d86e94a0c5a5d","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615688950.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTXjMCRA9TVsSAnZWagAAMocP/j6JWpKpNqZatCrZQ6s4\nf4Z8nnme1/VZkS6/4kAmH/4PdW9ZwSndqh9mBdc4n6sGliR458XA+IQ6phWG\n1X0RtY6daxe7lNZa5SxxvqGa5bEpZVv8n4FFdLPad2F92yVLAGNS83hn2/t/\n52ToPSREM1FhGWZHkpPYMDpHLJp8FfEnZAy889wxP9ukgAnke3xQYCal4VvN\nk49NS2hSSxyV4KdlC23EK7xGih4n12dBnziHJ9VEhZWoErG/Ss6KwP7zelGL\nxhlMikFBIIqIvdvhTqzjDedZPRv1siDAG3CFOj0QcVXciiFbhaHtfGoyQ5/T\n+5oZOzgO0KgiyjG6yXltitw8P5O1Xji8YvEqho5XL5PnTyCXMg04vD9qxE3B\n58t/qsXTizk2XdWReXUq0FZNjuDBVADNi08ev8IQKfFf2llIhc9VBZrv2u2A\n9v/jnhKLUXG021jluoCRlR21veoNxQsSGssUhSR0K67hAhgFKJ5GP6byB5H4\nRIx1Og86GIGhpZFlkoOTS/3I7PpnmS0Idbzjp//vlN4AXmUQZW2lzHwIQYeO\nOubKZcu6hJN5zyCb4SI8phmNAOXoGELRBzRQS9+QgCfNT88jlfjme5OzGYgm\nHaSdXlh43J6TQ+70fUHnewjOUPjrTi1xrvy7hfDTD39x0mGiUFK1x6/C8eZZ\nzJs+\r\n=YJh6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/ABtoQQY7BBU7T5X27b9ik4NuCGT5DF0NwR+2/kuolAiEAqp3KIc68GnJNUKAQ1r7m9lFBIxZjedcj9fYF0s+mfKc="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615688950.0_1615689932347_0.8607887531431158"},"_hasShrinkwrap":false},"1.0.2-alpha.1615696525.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615696525.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615696525.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615696525.0","@energyweb/exchange-irec":"1.0.2-alpha.1615696525.0","@energyweb/issuer-api":"0.1.4-alpha.1615696525.0","@energyweb/migrations-irec":"1.0.2-alpha.1615696525.0","@energyweb/origin-backend":"10.0.1-alpha.1615696525.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615696525.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615696525.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615696525.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615696525.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615696525.0","@energyweb/utils-general":"11.0.2-alpha.1615696525.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"64b9f4c56b2893aed747f60c117cb56965fe3b16","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615696525.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-DxB/hYG1s3Qk2K8eyTTvKMU7eknF7KzFy/W2Q1qGrX+1OtxhUVyJtRVfpHGgQ6PxUrXGJAITzBdBf54VpsMlFQ==","shasum":"f19388f8ea6c12aa8848b4777501a11b6099ddeb","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615696525.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTZZ9CRA9TVsSAnZWagAAIR0P/0nhA+N/PRsIuFnnoTbS\nFwebRZaJr2g2XWAg2MGMFiB0oJfj1yT1vLg1kEX7+1eMdzhod7F6NDJF44ZZ\ny/v6a4rf+6LzNT7CYBPRyi5JcKGZBDJ9l1BkW1i2Q/aFYy+zRYtsW6i7NIAM\nkS6MKaOGA9/GPjqto2TetFQWyCQXxB5arSM7VrwiYLMZ5AYHS24dqvSZoYu0\nsvB2OPwMiNvbNJUpj0iXOaMbmxQM0kdIZVRfI6YMjEA0F3QhCw3GOAb+BmFN\nwfJiPq+NxFPo+fencvFB2szbtFzf1j4kX5IynXfBDEqtSudOuKxh/OEBCzJI\nC63YiernSr1QDst4VY6+PRvsLBdgohxR8NBWd5/FUidGP7YynVR/n4hIwt24\n/hk3UO4FF7AjLeiRMppO7Nj3lyIpX4Z+ZLkKrJafMNxalRvboyqlwh+NycWl\nxv6fHLz1ss7f0XZyAeR+WXlTaB5hTXmjwxXPRXAa2Ar3CB9AnuXdPKhYMatg\nuQyoOrbnifjAWx4AFfyq7trGYgCPvDS7RmFjgPgIQyW84mJFA9W/Qv2Tm32s\ny0KpJCT/lKncyHlsq4qNg6H9HmTbVfCKwnmlm8VQ+0oAXXrhEWOTV4aShWCT\n+G5UgeXKBTgR1JLCzyj/jSH/pgLnQJGcWmRGT8qVkOk5ydHq2+tCbVIZiE+t\nJOtO\r\n=nlap\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDP5pXrblFyydISlaB1rLHipAj5qKStvZkJkvfbkr9PAiBRDSMExmeTjQexN0lgAwpd+amZZLVstj2dKmRrZXJ8mQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615696525.0_1615697533236_0.2540827068690106"},"_hasShrinkwrap":false},"1.0.2-alpha.1615714247.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615714247.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615714247.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615714247.0","@energyweb/exchange-irec":"1.0.2-alpha.1615714247.0","@energyweb/issuer-api":"0.1.4-alpha.1615714247.0","@energyweb/migrations-irec":"1.0.2-alpha.1615714247.0","@energyweb/origin-backend":"10.0.1-alpha.1615714247.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615714247.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615714247.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615714247.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615714247.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615714247.0","@energyweb/utils-general":"11.0.2-alpha.1615714247.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a6ad2be8b752550f99495ccaf010e2a732976c76","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615714247.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-kGGulZ762eWOU+Ni4w/x8aQx9aTtnrh0XWSxkG5giTKCbbUwL8SqUtmKw+alk2NQc1yaxa2KpNgqnCwJ3rkmVA==","shasum":"c358788f3fb31fc9fb0ce4109b04eebca9ea9790","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615714247.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTdtrCRA9TVsSAnZWagAANl4P/i6ktT5ivcyzmKVwGLcW\nPX7iRYdyxewefvrrcKAGdTtpYPisJO2683rTfIGMlY0YHNaCaQVMUxEMRQDn\n18wiGwS0hdjpK5OWva4RL1XStwxLY/XbdhXP3muBQaxHEOYgkSH165BpNK73\nYZtdh9Iq2wEbwDHzpdwpHgu88Qq+5WRMQVnlFcTQFm8DTRdO6XHr+38qJUhx\nx32fFz7Wx2UV4N03ylaqEUyYgC2bgOORWxsPa2jYNSgyJAg1jZgwQRqfGuz6\nE8otdXbh9VFSy/Zx5zijBn0feL5FoZ8klkJF7F5D8xt11yuusyODOWBpG5/4\nvlS37Hc3n+Uj9tQG3KwgBacw+5JGCUv8eAzlgt9IW1TgEOq2YEOQYBpiVSuu\nMMCeupLMvbvc2alj8LkuFe12l/p1QrEAITw4Gg6z/vLuVta+6/VseRP2soyl\nhWOfilDDWyuukqnfooVGAFG5/5AqGB7X9twcXYZywfn+yeVxSuqTv0dwYiuQ\n5NapedYDcsnDdo/WyovffHvJhFbXUH7fc0YpuUGp69ivguduM8ZAgmG42RdF\n/xM32EZJmQ4y6CSDEq4aMbxSr3dlIM+txO/ngfvxdSqJbbTkmUPXeo0y5CIz\ngMUgCfdadKjoNqNR24Er6+MlBpdAX4kmBFQJpe6SuizuZw5GVWah5mqOI/he\n4Fv+\r\n=We6J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkV5qdcWgl5NEWK03tSA+whgJp/xFw3gXW4cFN45a4yAiEAnCgw6pOPqubITV2BJn88ahKMNNsq3AOAQKimT54xgvQ="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615714247.0_1615715179500_0.984582499646693"},"_hasShrinkwrap":false},"1.0.2-alpha.1615723150.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615723150.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615723150.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615723150.0","@energyweb/exchange-irec":"1.0.2-alpha.1615723150.0","@energyweb/issuer-api":"0.1.4-alpha.1615723150.0","@energyweb/migrations-irec":"1.0.2-alpha.1615723150.0","@energyweb/origin-backend":"10.0.1-alpha.1615723150.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615723150.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615723150.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615723150.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615723150.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615723150.0","@energyweb/utils-general":"11.0.2-alpha.1615723150.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"283e015229a0c49ed50ffc4139e23bf462c5c0b2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615723150.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-3f8bRfPqAYkTy6kHgPtO9Dp0pSBZ0r9H0b2/A9ygFX0kFPGbD5z3YBWedZoS/6ciearjpfmPQsnDiqetjKkDmg==","shasum":"c148e31e3e6b47d61b59419adbc08f7c12dcd83d","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615723150.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTf40CRA9TVsSAnZWagAAx6wP/Rnq+8nQer69ogzdP/CJ\nkHKHPKbcQdIbErMj+vP+AZFZcuGEIvPKRs76VrlzqjLBdhnrrlbleLFda/MZ\n5O1MWCrUECnDcTEewzZaTP52YSmVAGtgbfkpGDYWQ8Je0lk5FvDxEDmYTB6K\nAs4QADoa5AM7rTuuhb0UjiJTF6x3HbsvVbk/YpUiQQ2+h3FPimgjLOZsJdi0\nLSbUAKviT+V+B/G1ELCHQwnolwRpYsv5qr+UQdCwIBJHyTovVES2H9me6nEl\nTlh72TxV8peQy49NKH1mMVsUP6uKdcq83WFGBqhX56G2ff3vgC6wk97PhHP+\n+5Xk+YuRLDDs2d64kIBYIRYwG4opImBNaUS8DzbCbgmiX68WZdnoFPsLSdgQ\nu/yP79jEQOa7XZvdJ153oprfCETZ9EgpYumT+H+sm1gbhMz//V1hLmlXQX0b\nN0cjpgdkZx28wM5LfxLdea7Z6PPLWNekgNkJFsRjU2ah7eWD+XctjNbrQZTz\n+JIntzop/KZhdhDz15gK7Q/5XV9dT1lNO/ugKr6eXbXYH0gx3VcimWqoTlaU\nKlw2AEasWZGK/N3K6BzQmJQxOeDijadLIbUig59ByNPMPEjxv0u+iUGwvRr7\nJLbM1MakpBKDnQjSXShL4uhxqfBM3qRgdp9ru6Sw/6EwF16lJU9OspUQFaPc\nurp9\r\n=8NIJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/xHFxKHWPkLdtw0d3BFNHU601fRH4ml4ZZwPhY0vPmAiBi11pTZAjDIHtuhAE8UIShN2S5PCvcfQMEYBYAfd7liA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615723150.0_1615724083557_0.0842668138377618"},"_hasShrinkwrap":false},"1.0.2-alpha.1615727779.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615727779.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615727779.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615727779.0","@energyweb/exchange-irec":"1.0.2-alpha.1615727779.0","@energyweb/issuer-api":"0.1.4-alpha.1615727779.0","@energyweb/migrations-irec":"1.0.2-alpha.1615727779.0","@energyweb/origin-backend":"10.0.1-alpha.1615727779.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615727779.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615727779.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615727779.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615727779.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615727779.0","@energyweb/utils-general":"11.0.2-alpha.1615727779.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"134a3e5190b287f3fb19e794b2a4ee9d8fe3a58f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615727779.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-tzPCbW1d+YpommRMl+VBozik1+H0UQyV2aKUSo0BL4LQmVJSsYQwecaAv7j8Z/N6kr7ziyMTwUkPhpsQc11BwA==","shasum":"abd4cd43f97ee8c1510cb44755209a81524662fa","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615727779.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgThBKCRA9TVsSAnZWagAAl+4P/A8P5En3mub1LgODT2xM\njxcxiKBplbc6jrHaDcLNpmQSnMR5fZ/5swozXCityNriFnslLtlc6gDtJwFx\n8GqIh0qxtKgkkAirpPa4mlPKy8Nx3u4JSlUGyCnBwzskkM1YfamMc0wGkFx7\nqt43QUOoerktsgaKPdmP9RvaD4clzU/+JJAYZbO6lZP3KbVEbhVT22bgAoyR\nYFWCj8CESOBJ88fFxfjrusvw6voS8dR3Hsq7cOqyVp+/NpTjUhYsdgKdWXjj\n+cL0W96ZQC8Cs2Ytz3UKs4VOvuKQv6je0JmHAbr5K3SXjo5MrdbszJlQRup8\nEsI784TmjVhlfwhA7avdkYDEjq65Vhmc2imKjE2T5STe+WdQKQVLIuwrYrYt\nYg8jVY45pTTbJi35LXR8x1gjIup0NZtIkz0MDX3qz4wFCNZLe1FqsiWIqRv7\n80rkphFOTDlSfFgv2Qgj2ojd1p6Z9CXrYwmF1envvlAt2WPrs4C9dDorYuL+\nWZ2TgMJKdtNW3mVOFOrFg3K0u2jx5w8ui/RmpTIEfcQi8asAi0Cd026fHNTs\n0l7ddf3ATGVMdKT3D4s5frQ5dQGNqPNTJz9bVkE8sn7GQkYki41J9ODF/rtZ\nI08TVzw2JhBGlq3eBFs+Pd+XgoPkmujg1Y3sj1le/RzHbnIKc3TZs5xv8r6L\nOUVq\r\n=B2PZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHewuLrtBCb9xIPo0D/S+jxU+kUFyBPUYkONrimC8iKPAiEA7XSSpM+JQwgswmt/Noop9xk537KGzlXGvGrtlj0wrfU="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615727779.0_1615728714285_0.0919107373559318"},"_hasShrinkwrap":false},"1.0.2-alpha.1615736131.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615736131.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615736131.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615736131.0","@energyweb/exchange-irec":"1.0.2-alpha.1615736131.0","@energyweb/issuer-api":"0.1.4-alpha.1615736131.0","@energyweb/migrations-irec":"1.0.2-alpha.1615736131.0","@energyweb/origin-backend":"10.0.1-alpha.1615736131.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615736131.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615736131.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615736131.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615736131.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615736131.0","@energyweb/utils-general":"11.0.2-alpha.1615736131.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.2","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c3d13e501ae7949cba3e3fa1d24bac35612c3ed2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615736131.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-iONIxGIMoc1SN5EQGVnuYr7s0zhVaDYOdou3YQBrwFp2v27274bdC6QtSQxVxO/QFdLexcOOCheW8IrcgKoRyA==","shasum":"eae7c20faaf0a590f1097441b244dbcd9498b838","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615736131.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTjDwCRA9TVsSAnZWagAAJO0P/2ssoA5AFcbOZgulP/O6\nWt/6sazAmKvSc0WziG0fET0Swip8c5UQ3R3YBBB81ZGf8wVXBPn/iESt/oNh\nXoh7OAxPwha65e+hAafkJXAfm5H9yr77cc7FzjA3by88v49pHyIDsM3L9lMW\nVenE7Xuahu3YKKZcIGUjkEIbecvMyGgNjiPD8ftlh26EUrqZqLc5DfLG2CT9\nJcDp/LcTNIYxpwPWgB347Umye7yD/P45UbcjkOBnJKBUrDHSUUi6eTgzWf6N\nTCF4y9Cw0GeKAHdCYT/Ys04iQKtrC4QMmUdPCZjVEzKZ+qB8W/FvxcOLBGqm\nDjMUQPNftUb9fghoEe03BIG3qobPM+ocsOsVPpIE9XJp+M1WFZrzYlSSXSui\n1oUwAQn+LnTMRkE0qDKR1hvkdDo4dNkGAzxp6tl5NAHC9YpIGetdPcmpeXPH\nTchQk4Q09bilC65j/j0X/SEACTOWjdfAlSXxnkYqpB8wetS2wV5cu/xHTIu9\nQNPtwliNgGfx5AQKhw93j1q82j9lkNxPAWMqkWn/UGXmVc/eRYGdc9fyEJ2U\nrp9YnYUU+bzP0joVNqFiWGQh+zrux7AUUDIxTQ5pvwHqsN2i7X2rEjifmetL\nOVnQ0pFNp3w6O4FntNGVFg1WwCviDUnFSzHrcJd6emg2IMBu2/QiPrb6LmA+\nw7O5\r\n=k9zs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsQlobn3G7WSWQLyNCQbUMbmitfj/NbI3OetNSTG1RQAIhAJZ5M8h5FU/5sdMeLFPAS+9+K9k/Hl8Qlvz56Knajp/2"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615736131.0_1615737072161_0.3755774947643229"},"_hasShrinkwrap":false},"1.0.2-alpha.1615742997.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615742997.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615742997.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615742997.0","@energyweb/exchange-irec":"1.0.2-alpha.1615742997.0","@energyweb/issuer-api":"0.1.4-alpha.1615742997.0","@energyweb/migrations-irec":"1.0.2-alpha.1615742997.0","@energyweb/origin-backend":"10.0.1-alpha.1615742997.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615742997.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615742997.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615742997.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615742997.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615742997.0","@energyweb/utils-general":"11.0.2-alpha.1615742997.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.15","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c3ade3bf14d6b73dedc9c836f80d058b86e4246b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615742997.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-pdslJyIBmDaGOHKNt+uKMEnCkDvv5Q9EHqFr89YdcgDTENdu9bVlPIZTVhdp/ZgSrVl0OI7xdVOlgCtMr+2kPg==","shasum":"5c6697fa218273c8a5947e91de53d4b8dd0fac3e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615742997.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTkwzCRA9TVsSAnZWagAAKOoP/2TO+ePL8CLsi0ZUM7QS\njT3WxgCK8euINP32gfzZR2Uz902JyBarleeEVkydPsCk7WpvATb90uicLVYQ\nj68YKRWNj7HOr1A4rzTAx6tb16ymVI2k3kX1zix51Idhzb8X6glbAwQCHZBv\n2iFr1qwgPNGbP6rZJs472UE/EHpVQEiYiq0WKmcjDI9NqAE4gNiLajotSNrw\nR5oDyM5lLZwqjoocM3D6N4TspGNbUxz02QY/9xC3Bw1Fk3QR++v8OdAqzCS0\neFH1et8aL3iMaJFfexe5ub2Hrz51TDum7pHWZpUmrZ6fz5prx5uRBsEfm/d4\n0TxewKNURa3GZiG+RNm1VhSlEbktNwdnim2G610qMat+ZkRoai4mnHEY3JKP\nRcY3iHie1lvmEujeWQLzJr1c+qFTlOdKiuRzQsagBvxpoRYbFJzp2k8oEYHX\nfYTHNGzyjkQaCwkWXc7KdCZBZRZmXOH6mx5tfAnRfZh8RK8kbPNWxn/R0EnE\n9hmMJQXrKBCd9ZomXCX3c1q9hD4C/ii0r2JjaPc0BvMSZRAnXIr1NViPJaUx\nxymitcpWwZ1jUPEUMUav52PV/Q8YXA/2Omsv/tHEgSmUFZ89p6HW+OcxkIEX\n5Q8jTAF8ciC2nmzkQPpHCzd+xHtFZNkmIS8yX77/aZyxv3xu+NWDbDKqLIXC\ntGTf\r\n=p7He\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL3CEcbubn/gWN3+kqKDU3/4GoFv69INpk2NxVf9Qr9QIhAKvZz8sQClrmiW7w5F9NATKnJJqNOTGdiZtv3rB11aSc"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615742997.0_1615744051272_0.48435923260952296"},"_hasShrinkwrap":false},"1.0.2-alpha.1615749869.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615749869.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615749869.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615749869.0","@energyweb/exchange-irec":"1.0.2-alpha.1615749869.0","@energyweb/issuer-api":"0.1.4-alpha.1615749869.0","@energyweb/migrations-irec":"1.0.2-alpha.1615749869.0","@energyweb/origin-backend":"10.0.1-alpha.1615749869.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615749869.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615749869.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615749869.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615749869.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615749869.0","@energyweb/utils-general":"11.0.2-alpha.1615749869.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c240c31cba4af09d322426ef09e80e89ea561f5d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615749869.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-7HlcLTniMN0JswGywAPl35co2zZQgx8DVuFLJAjFOKtWKHkrhMY/Q7qbPCV/DVybYSkKyjpZmZwINdKDCOjWFA==","shasum":"e5362740a192b9e2a6cdec7412c3e0017bb4bce5","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615749869.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTmbRCRA9TVsSAnZWagAAqb0P/ixu4Qk2DP1SbD81GLF/\nT3mAfB63rZX+k0Ur4Zh7jCGPHrYH6QZt7ZIb/S1If48aw5aauJ4bkaooUkVd\n2S3FUuoeNRKcLOVWQyFFT+WQL67ykL6EWYcINpPYas880LftvX0JqoPP5yrN\nCDQ/snLiZWI2bAeKu5ota3o7+SMDMDEhssJx6LBbYbcfVBN7dHMvSUglebsA\nTp5i1aMIA8hCU9rh/aj0/UQ3w5UM5SzRT8Rg23iY9fvvgat+nFC1bFXwF3Dg\nCBVnL/qJZycSIy3WOvHVGj4wBnk7uV0Q+VA7+SfmGMzgaxuj5qi7gTjYrECF\nijUOouAqh7A2seoeD32x9cYozRqhQ7QCQGm3t9YYiRMb4DLzT1287ciegjRf\nNISPs2xs8Uzs3M5JZY3XalQy1oJS1QNxHU6ZwKh3G61RhXqu6eEEHjR0G1Ch\nCReAEztNGaL9qlIBdVmHF6SfoYOTKkhoXGelDJ+2QHgVYU7/Rb/p9yTjzK3U\n/uzeUsuqwWLWWaO/ofy6lbzWuJijaUvYDuXAoiWQwqZ+GdSHz+x9l4BfHyFn\nLhKFHCK0yuMmYS9v4XBIlu6d5JT+82PZhksyfD0wl5hOyuSxkRHGE+9G17ay\nJo7nUyP3ZytI/FsJDZ9H1Gnon+xehHsWWKpyMHOHywKLSeIn2Jh8A7evwz8J\nJnDf\r\n=4Rzp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDZSiz6d5Z6tdnd1ndrK/BEYIzRJ5/TfSQXsIceu+4myAiEAwHXHuGiNXgIk2PBRVI4ojaAMGijE55WnVJcxEXaV774="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615749869.0_1615750865187_0.6946177251577104"},"_hasShrinkwrap":false},"1.0.2-alpha.1615760419.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615760419.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615760419.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615760419.0","@energyweb/exchange-irec":"1.0.2-alpha.1615760419.0","@energyweb/issuer-api":"0.1.4-alpha.1615760419.0","@energyweb/migrations-irec":"1.0.2-alpha.1615760419.0","@energyweb/origin-backend":"10.0.1-alpha.1615760419.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615760419.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615760419.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615760419.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615760419.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615760419.0","@energyweb/utils-general":"11.0.2-alpha.1615760419.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"beeedd1bbaf17025f97b787f9e875bf2a34ed085","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615760419.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-q0eVAAgAFkNDqzUXaGnzgM/JrCPllx3Rlitbo9x/TBtlfs4uClhTMS6cRiQzhBObkQGxWQZLJS0ovM6SMloeLg==","shasum":"6b02e2358a32b6ab4e00584eb59ada86baf54e65","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615760419.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTo/1CRA9TVsSAnZWagAAUtMP/02m87cZnR0fNV86HC42\nozM2YIsfoVFzcoFTwu2zWQhH1NOhZqVvYVwIn64Yak4Vr3TOBXi8NG8+E1sW\ncGbhhxgJ8T9WhGX3D12p+gJBUsQJlhpL1hspcCSQEQS7fuiakdV9KjU2iDMM\nQn2shaNThPTp77d8b9VUw0qM6NETzwXyuDO92a2Clz0Cfs/qVfFI67aYoPFN\nXbfBHx4dU9mi1PNAE52ymqnY1vtyakkDmvqcBvFjCrnqBlzrjoV07eskyPNi\n/kN0/Us/fq78GUUQP0nWzCNr4lLYx6OIuujGcnqPeSi4fG6//oYw8K4klHxc\nVke+Q1G17sat1u6i1TP2uNd5/NIlEUmLouvq8fwLlI7uuNSZoB2XHBaWrN+R\n+qLyErBzBvpRGp01NWfAOXQZ59n5Bwz+GpVpcDd9rFWdIoELrpM+nHQo/EoZ\nBhW/qGyUtip+gbhDj81+G6UE3cfPlcdSRpgXcxOrzvIBYtv/WY+lHdxNAi19\nwLRLqd6UrqHTr6UfXqGHCxoonZ1EkPD84LSazllZSPlAo7T7iVR23s6IWIRZ\n1BifoXfMiWJcImnXXXXwHHR5FzSJnJlFjQhQ/MJYPBdiplL7IkyR32WXtBrq\nMu0zhoUFzxz/DCx25+Nbj5NU9Boy7TyTQcPDAf0KtvfVQPq1yEupr2RXKmOq\nJPvs\r\n=DpT/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh4/R0TJZX7N5p48kzk0db7/ELFJxT0Y5WMuhmgqEEWAIhANcBOhabtX8UqQUtkbYuk7ewaTCLUnEduYS1fQ3PqP5k"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615760419.0_1615761396715_0.7765411524108687"},"_hasShrinkwrap":false},"1.0.2-alpha.1615769524.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615769524.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615769524.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615769524.0","@energyweb/exchange-irec":"1.0.2-alpha.1615769524.0","@energyweb/issuer-api":"0.1.4-alpha.1615769524.0","@energyweb/migrations-irec":"1.0.2-alpha.1615769524.0","@energyweb/origin-backend":"10.0.1-alpha.1615769524.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615769524.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615769524.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615769524.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615769524.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615769524.0","@energyweb/utils-general":"11.0.2-alpha.1615769524.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d13142b2c741992b5b545440fd703484b17bab9c","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615769524.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-KpVxcqVDNXmFfMUy/JH7GaMkyYstPiPbvGI5dLpIGSQbxSI3VLUyjpC58mymOha5Ped77L3rzGhyE31zjhE5Xw==","shasum":"af675e772e248443adc4c284160e2a863c257d17","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615769524.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTrO1CRA9TVsSAnZWagAAZAEQAJHnma3UyGTTAiL1h+zJ\n53h2nWF0ZkWFHhR1+nEk3a3NAdEfJilCSB1/cV4+l5ePI08Ul8VgshChwv3z\n0Ok1dq9+Dzpjz8qswqkx5eDP8usVYYZI3+xNufsWVIPzTJIJ6WBh8W3oiCDY\nSHdJ9nVUQeQsV+Rkf9GGhYrg4oWTDj0/WHyYiSWJ85MBBGV11517o5vGJ6BF\niVmPouIQHhjaLuCh2zYwJYP82FIqLgXQL4WhGuPS8SHMr77QxtgE6xkz5p1j\nhIVVzCoqTGoDZYKkmdNGnlBfyhSJMSyB2QWBCknUlUzLbIPLVQpSn6HPS9Bg\n3UKWDqlUhh+sy6Io3e5Wy1VfkDhcy4aQQ4ujb6CCs/qVGSyXoxzksuNiPIN2\njWQgGrlntkYrdXv/gLPKkcu8MmMH+lP76nBQ2KxTPzHt+lNBPJcmkFVAUuJk\nXpswpSrQIdNwXqdKulWaNwFj9huw2fUpJ4x7so83E0GWQ+BnxL3Sj4u/0Qvs\nhU/V8WZzfA4mG9Ngf12g8b6E75hHMQCldIERwrlBYDMSW8iDNhUqBRFD9Gcw\noLNX+xXZqqCpOn9AsHqJrS6X977Hqp9HU0NBrIHvEuoefXR8DJUnIXfk9S9a\ni7hdV2t2lRhLhAGTJyJylYVBw0I6VisWm6v5RfuM08Srl2orymeUEbcWrWZC\n5VYM\r\n=L67M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDc6ev1MyiTXeURHiHYWkq1ve1sROx3ry8zRlefsupZjAiBLf9hVBxQist43X9Njm8ifEOS2T69er2xv4Jhn2ECuXw=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615769524.0_1615770549045_0.6374322901135789"},"_hasShrinkwrap":false},"1.0.2-alpha.1615777085.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615777085.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615777085.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615777085.0","@energyweb/exchange-irec":"1.0.2-alpha.1615777085.0","@energyweb/issuer-api":"0.1.4-alpha.1615777085.0","@energyweb/migrations-irec":"1.0.2-alpha.1615777085.0","@energyweb/origin-backend":"10.0.1-alpha.1615777085.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615777085.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615777085.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615777085.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615777085.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615777085.0","@energyweb/utils-general":"11.0.2-alpha.1615777085.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"26cadd3f0ffcbbbde09217c5947287b2195a1528","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615777085.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-sL1oZD2NaJQDypYHU6AnjAdYFUWbRInEvab6DbcfdbVriUrQTrPxqV4sNzliXXjUrPnoJgjjBF7p/4KWHonyYA==","shasum":"2d34b16ef81b8a1b0ed73b7279ea9d5d5ec3b377","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615777085.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTtFLCRA9TVsSAnZWagAALD0P/3N9QBXJ8mQy3BHJuLVC\n8383ui/Ot1Tq0KwBbUrW8tIlG2F5pqjy2ifDHHy4RVkgQfB7KSzafHIxvqu3\n37j5c0qDpA+Lk0lLPVXS/jwUMP8nqRxJ9licxGmWMewN4UkfqqXk1ZjYusA9\ncitDafVz12PSetTedkwhRUvvtJnWgu09lhjcJy8xLEUc4xgOZ9uZDujnnHcX\nz8l+6dO31dgPY33Bz0L32aP945onjZUpYJogu9eMgrz2naQl/ch3CdEfpwHe\n3uRFXbZ8qV2zWvqKJkcLjxADgqyt78sqRSI2keGpxBpdbkVtMfcVp6QRIRez\nXeOqbLuJSAepkCTBqBWOuq8MvJrjvCl0l+nkzOH672P4sH5LDJF+rWQt7c7q\nvhXJGsdeZMjotmOr63IoXCHsbe74LIKVGVoJ4U/sHa5WNYK9+dGYhFTENHYT\nyci5FNFYZEAzjfy39Ku95tehQ94D1FAm97mJg2OXaJrZJQQnSX0SpTsvRoXt\n0VVIcPEKSyW0X9SQ1P7cCi/yp6VMcqXGYd1D4K3V3MX/jEOC0BSzgioRUni+\ntjIU7pBF9qcbNip03xvrzJZlt1sYK1gl7s9Ezz5AC4xRknbVpbPZsTB3JRD4\nNkFm68wzl6SfR/RyT3ifHT1f+5gY7WWMJUdXSxQUA+UvodcbZR7wqfmfq08o\nv8wS\r\n=q30Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD03sJe/iZBfJVDnqqDQKfLFm8M9/EsaMQQ9BSbuG2CQwIhAPvNGonsPl3qK2pA4o4w78wfafe8AALaToqvffdgz7zy"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615777085.0_1615778123271_0.6095677014641547"},"_hasShrinkwrap":false},"1.0.2-alpha.1615784077.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615784077.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615784077.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615784077.0","@energyweb/exchange-irec":"1.0.2-alpha.1615784077.0","@energyweb/issuer-api":"0.1.4-alpha.1615784077.0","@energyweb/migrations-irec":"1.0.2-alpha.1615784077.0","@energyweb/origin-backend":"10.0.1-alpha.1615784077.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615784077.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615784077.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615784077.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615784077.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615784077.0","@energyweb/utils-general":"11.0.2-alpha.1615784077.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"0f535b45c00696985cba5c0884c5e9650d571596","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615784077.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-xFQrpZDRFM3WRzlN3Jw5ZiYx3P5ffDuijo9FGJv+MspUx5qzDhUIEbiZWoqmQSwc+ReQiUhqwzdensl9MifRTQ==","shasum":"d85927741849b1bd9c19a9085883997110b8bc42","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615784077.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTux3CRA9TVsSAnZWagAAIJAQAImtZtwfARJ7sG4wSH6L\nHffe7O0MtOX8cxfZHRF1LjThrXfXun917JRhcczLR8AaxRs6mTc7VSl9pT33\nWYX5nrz7D2CYeCmSzBmv/lpfQ0P54gUHm6NLgWNwqftgq8OP47K8DVSxtGnB\nT8LpnO524kHdunf8tueUXjMwvd+8HS2LnMAsGs3xFTW5IoyjH2vygOLprH3J\nfBS25SwiCIWwHWyEXYrCEqS4AkZtW6HljHWkeTjmnNyHCYPhipm22dhsDxUA\nlZn21w51wG3GqAdG7e1dsPm3kh0TYm7UWGapX+MQmm/IokAH71QaBBWAxj7W\nD/5YHImPsSDul19+ph31xCpP9SOx8sdRYecYOpaianF/sivgeVOcmAM/LFF+\n3u2dqRNrgL9PJ1uK8FV1W1O4oF8UvkCkQG+gkeENqs2U1MhevmEIrwAxZ88+\nkFntDCkOgiK5PFS287CGt/LEbaqb3uclKENkbh9pNfa21R/INMbdSBoXiTrt\nhabxbAJLxNZ4iPZZUy742W2inEdD4YGHtXaVXoLc/UP5auGgV/YVKTG4jmwo\nKFqBEIX8Ewq+bNZlQqdg4tZ42oYxfsezOFmZ4fuTXXYz24arN1CUjkZFe+V3\nt5pVfuL9Fjhrt5qi3qWKXJY/pVU7n0rLYDTbs4fOsvvLvkBNTxXGt8IaMcoD\nSY6o\r\n=C38l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0hmDZP6wKJ17H++qMverEY9PYrbJrcYQ1t0z9xQwEtQIhAJoD2TrPmazbVuLkym6WbMLhFiAPB/5KV/gPPA7uALip"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615784077.0_1615785079264_0.42441480219697336"},"_hasShrinkwrap":false},"1.0.2-alpha.1615792454.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615792454.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615792454.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615792454.0","@energyweb/exchange-irec":"1.0.2-alpha.1615792454.0","@energyweb/issuer-api":"0.1.4-alpha.1615792454.0","@energyweb/migrations-irec":"1.0.2-alpha.1615792454.0","@energyweb/origin-backend":"10.0.1-alpha.1615792454.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615792454.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615792454.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615792454.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615792454.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615792454.0","@energyweb/utils-general":"11.0.2-alpha.1615792454.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"e80cbcfdece074dd0c67e22a406a2b6f831d94eb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615792454.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-iMm7zbmyNDTH6eWvd+tcCJuY87uM/DzDnC1rhTGuvHreHY6g4Li4zvFQZLzP8qLTilfH7e8VCUZgagYX8Fvxug==","shasum":"f1917d27560cbf50b5f4974f3f0846ce30a93ae3","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615792454.0.tgz","fileCount":87,"unpackedSize":1576430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTw1yCRA9TVsSAnZWagAAaogQAJIpucbkyQJLw7lCuFvg\nb+t4zUNZtUlwNtru9agJysQLxe2HGAiPcbp8ICPDANDJ3/pWhS8cc75GJkc+\nV8gxcQUS43L+rzAO5GaR/23Tn20h6Y/i9W1wUfLVLKPrCc6Wo6OZlVvgoFBB\nMxypWZqXXUz19HG/Tb3R6U7UtmeBIQOY+EbAV/A1pPp7mFanRtOZdBdDFvzN\nR6uUtkqqG7tJLR9HAj3LWGWyDyf6LeRNUim6wsBT8sEI/GfbsnMAvgfwGw5b\nUKt+kdFmWHQuCewyBJ5BdB/BN6uv+8PdoV9/34D1O6+Ttyw0Oo0+opE3Hrn1\nrveTB73K2imiGIP3atSFV5vFIW1RJwdhp1jq1v92R8wuL7XDzrePmwl2uYto\n09IkiSApkNFXyBw4xZ+f9JfKxPYfKP1HN6DgJoBWowL7wGlEv0yE5d0iABX+\nJi70VtQS8LkUjvwb92rYGccR6XvyG0klq/Z+gD2b04bvQJ3UayI368fXIzVO\nuZvWAvymGrY0+0HdIMYbvzRZkk+GStKfDMLwx/FoevLc4Q79v8oEfA9+Ee87\niWi54TnJws8cot1xfA8mDOqMgNZvVR4aQvx8MIB+FCYsMuD29M+R1tThfDn+\nHSUFEgbXN9vErtoat62oVooeBkaAywsH5qfaUNUcFLILTpokwqLFXXWIqF/2\n9OJU\r\n=wl31\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFt165BlP5JrenofVkKsZguayH76ZW/Ff+kQRXx5nzVKAiEA1OBanMtCm3n3Sot2F5fNy1Rp5648v3EUP4f/gAmyMY0="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615792454.0_1615793522021_0.25318474378101286"},"_hasShrinkwrap":false},"1.0.2-alpha.1615803094.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615803094.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615803094.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615803094.0","@energyweb/exchange-irec":"1.0.2-alpha.1615803094.0","@energyweb/issuer-api":"0.1.4-alpha.1615803094.0","@energyweb/migrations-irec":"1.0.2-alpha.1615803094.0","@energyweb/origin-backend":"10.0.1-alpha.1615803094.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615803094.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615803094.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615803094.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615803094.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615803094.0","@energyweb/utils-general":"11.0.2-alpha.1615803094.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"9d644b0021d97d3f2db4132d6e3a303d8a630009","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615803094.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-KnzJuB9md4zm8J7fdEESp6xdM9q/ArEuHoS+vwi+cznIzayjhDn65w3rHib91MYZ+qkamzpBRBNnM8IOntTIvQ==","shasum":"de1c3c6ff2e3dcb200b23f27608cc463a8a301a5","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615803094.0.tgz","fileCount":87,"unpackedSize":1577169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTzYwCRA9TVsSAnZWagAAJuEP/3daywIX50pV1oJmofZp\nzIa/wcpD8ipIMYAEX7dAmPt76JF9XGSestBLoQqtZENztgemUV4MpzC8wJq9\ncauSy8cxfSs07+dxWivuSn/SMTCjeRkWZWBEBseWHRfzxU4GRG2zT/ZB4hKH\nAyAq+01fHZYr1l/xClKNM5NiNdPPzi8l5H+RD4E/jiaXcny/5HZLHh+2hEr8\nQI5lBqQrwiwF7ro0ABC74kRQxc3S6jgTyO0ENzTFAGhiZw/IYib4aKDmhYwH\nToLUWWgEI/7ZYRs7I4Pk3RpuWXvjCrMbm3y9YnVhI76AxMXjuv5Pv/YxRyoK\nqqHgJb9+1NPbkcMtfSGSX9CFmCDQPmgR7RasWPPWkBkIInMl/6ExZmegDYEa\nTTMsniJmShAdRFPjsa+ikiyCG9s0kYUfthgyqRqwEgM2gSN9cKPtYnpHttUf\nWxhrHQo1OOlMqg0e1az3vpBqL4yWHHKofh6/iNnNArEwSvX1dWxfl3Z/rW5p\ntEm0tvRLpHRO2qpa4W8o051rAPK/AYBEHWonvKuPPup3JMRZ4bQ0SIoejjtr\niUulqlVqZQgUvb+rXgAKueACeSiONJ9ozX5qEw2MIKDNIv5o/Pjsuj1XfIzp\nBJWzkM9N1q586SSG7bAKjIkHo27Q5Q7v9g0b8vl/aBI2qisTva0kvhjMD5us\nIbRH\r\n=q5dp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpfvQAThZIdyhJQpFIHxAineKwWbktIlqsZ1R/EnUsagIhALFnjjcqnABrZlqu41kUhYLXQ0kk2H2XGGyL2UkrrqTN"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615803094.0_1615803951615_0.24251402792792076"},"_hasShrinkwrap":false},"1.0.2-alpha.1615812452.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615812452.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615812452.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615812452.0","@energyweb/exchange-irec":"1.0.2-alpha.1615812452.0","@energyweb/issuer-api":"0.1.4-alpha.1615812452.0","@energyweb/migrations-irec":"1.0.2-alpha.1615812452.0","@energyweb/origin-backend":"10.0.1-alpha.1615812452.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615812452.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615812452.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615812452.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615812452.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615812452.0","@energyweb/utils-general":"11.0.2-alpha.1615812452.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"85e1d1427577c774c0af521ccfc8a04420a6c8c6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615812452.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-GHNKmeJUKCXsHBHt4X+J9USPzR1GOPTaFiMLqcIz4L4oTnuwS6obv+M4xTZkVVNhOYYwlq3cG5Nw9yl40aH02g==","shasum":"1769023cdfff44faa099e3d6dd48eb03594fb5cb","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615812452.0.tgz","fileCount":87,"unpackedSize":1577169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT1swCRA9TVsSAnZWagAA8HkP/jtYYMKYlpKucLJk22Ms\nKsgJpDaa/+txlwveJTvvwgacw+aTOw4ObwTIVvzZ89IIMlOWJleFEYr78pUK\nxQ1+qiOoM2CTMnHtoY4yVVIXjnPmtgj/JZKi9o5hahglwkVbkfMRdcsUjN7g\nqCCkzjqdjyVJ8YBMVATRXOcWB6l5Jkr9ux/M1Idss3I/uezjJKwPWdF/0mmQ\npCsxtEpjj0EuAdsAPm0Jkfaix73H1rEc7GCQV9if9I8B3ib0SMB5USMD9rQO\nOhCo2HiaR4s9TO+6gMRq9ZNdauglkOInkllCJ8PpUQnQdP937frISxV4Rag/\nF9Uc4Mo3i7O9MYqyF/2K2hHMLAApR3QMPC6uH1MPBWkolEVgQvnBojAyoOSe\nGbufKgOI76kqedJLNUWgoq3YOFg5NrM58aeUhGfy3hVEfQfhakBs0E78VT/F\nTJJOJhN2953fPbbmPHeCh1xJCNGOKu/BiElnD9zcquvK6YkxVfNYSRWcmOH5\nw8zq1zSeYp8MZBdD92aZWIN+q3a6IbgeWJ6BV72xFDwWhs+uZOPBWYgsNvdq\nWQNBGejGOEIg9RaoBxtLop5cviGsMdXkkbZRAYmoyV6HAhdCRj5zFGSABa3j\ny7h+FeFo9EN8/2CISfdU/ufeOFwc++W90EL9lemosN/Lg3axdSBo8vE/FroE\nANey\r\n=NLJq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDTnCM5ZXG0l9nNffFmoP2ufav3TD+/OqYl10C4r764LAiEAg/RyFGEGhAB/epDDz4+hAMyB1YQOU1RjTwLJC38tQIk="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615812452.0_1615813421622_0.8957010655087223"},"_hasShrinkwrap":false},"1.0.2-alpha.1615815645.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615815645.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615815645.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615815645.0","@energyweb/exchange-irec":"1.0.2-alpha.1615815645.0","@energyweb/issuer-api":"0.1.4-alpha.1615815645.0","@energyweb/migrations-irec":"1.0.2-alpha.1615815645.0","@energyweb/origin-backend":"10.0.1-alpha.1615815645.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615815645.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615815645.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615815645.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615815645.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615815645.0","@energyweb/utils-general":"11.0.2-alpha.1615815645.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"b461cffcbc387447a6c3c3ed9e640e68859b3698","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615815645.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-avfHRrrK2SrOA/XQhYMBf6FrDVxcnSeajMGpZEGJm5iYoOL/YDzVmD0B5q3zOGYaWICmnTDYVxN1OyzrV9Jfgw==","shasum":"03bb26cdf61d4ec6e7317afdb776304e0e6da275","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615815645.0.tgz","fileCount":87,"unpackedSize":1577169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT2e3CRA9TVsSAnZWagAADeQP/A8eL+IESwlareXhF6jz\nuSM5vJ0k0F9h/FGS5U1NvQMod+5ayr6iQB0VHcARKFyLXLxp1FJjEjlNuvBd\nu1zFtsQCJeF+DOQBVh917ExkCrWJ5knEXqQ4AE00xaGcMNMG91zSX4CTItH+\n/iAWXIyXuqTx8VPG0COJ5ejdbNs0OwBMPYkMgdK0HuBmwe9z8Iy5k5qtv/MB\nMxNDUSDfDWC5cWbQN1Md0e/E6eB1znsKXPn2sFFAGYpk4UXLQOVjrBxMtIQt\nOQRdUlvIrIJ8KdKtwjmqUCK4XE2riAjwc4fDwwfN5xBodpm6WjYBrnGHa2GI\n3yUIhWR9r+RjNbxIozVTAsc0DaYDCR6SI22C/HnA+vPVvYxxReJrV/rSM7qz\n/CcMbjTEYBSsxWr9PGlAWnIC4qOkH+XmxP0ZZxb3/WcREJigwwzxkwOO7XGH\nKGIbL9aJrz8TVJksOUhlCeba0QWHx8LU2SgcIGSJ+ojwX+TgGurZ8/OFJQEO\nce4NEWs1c5mwMVEhGNWRVficYntTQRFr8fraMxpKcqIX+RCwifUG8JXwZp38\nUZ0ePd1aGkO2jfvTODGmKwMkM2qSdV+4cRu3b5KSToL52f95aPYB50RQqNNQ\neCeRhlbz0UgvS3ju2HspMScHzyjBmx31DdnuL04aYVxZy1nCP8SFohAkwUmk\nws5O\r\n=MaMX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOikxLoVKFJo3Ha6ztlcZ/iYEjtC5UvkLKz7vAwSbyrAIhAMX0sXFyxBujVi+PA6sKGhUrzDTiveE3KVlZhaG9MWfa"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615815645.0_1615816630968_0.13446240947954058"},"_hasShrinkwrap":false},"1.0.2-alpha.1615817314.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615817314.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615817314.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615817314.0","@energyweb/exchange-irec":"1.0.2-alpha.1615817314.0","@energyweb/issuer-api":"0.1.4-alpha.1615817314.0","@energyweb/migrations-irec":"1.0.2-alpha.1615817314.0","@energyweb/origin-backend":"10.0.1-alpha.1615817314.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615817314.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615817314.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615817314.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615817314.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615817314.0","@energyweb/utils-general":"11.0.2-alpha.1615817314.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.13","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.13","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.13","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"573314ade24728360ef7045c6466881d7c476432","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615817314.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-PFIvD6JhHhZaWTshG84iOS3e6sSyS3BnBf7QPtt3oAQvxKUcwP+Dwx4Hp85W1xQ0JlbYDJekdVP3wi8rnlXeCA==","shasum":"de6913ac6f82a65cb002315ecb28e732d047a480","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615817314.0.tgz","fileCount":87,"unpackedSize":1577169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT26VCRA9TVsSAnZWagAAw/oP+gLZPKdy0YEfgCVRa8uu\no3uu8trA6dDwGp6lenNRm03fvfVPPxd1BrqZOw/WM9+4AXUl+qgRtuJl5fo8\n/DCV9TkQj97oLsY3HBbl231ahiC2fqqqrD1uOwm+JiV2cfuPFFaSKtjc2M3R\n6zjqOlwrcxAlc0ofasQqa/PB7UGh2ppy1Qf26DrrELGWx3/Ggv+5wbeoN236\nSwpcBkBz7/U6szxJyhIogmTCO+wBN/yq++XcnfmkjwiOjP5zDae+8XMOLcLr\nfSGkice42o0aKFCljY/K5TpbKudGcCz0sn/A7uZs/LaBjMIKWBvciWmzOxNg\nk5r3uGaIY9vt3g0H5b0ujAT/ucProV7NJJCGq2gRyZYcPCOWwYTZDI1vktle\npyoaIDCzc9Msa4IjuUlnhngafLFB77U0kMvJzG9EAKuVhpUV4hkO7GCDyjzT\nohrd5zffXQOEGyv3cLflyrtUZ8UPmbSB4ANp8vCG/+Anwt+WJWChgV/xLcmJ\nQm9T8pn+2gmQ8IyYdkLNOz7cW2hs8uuzwDZJSmINbBkEU2ifn4YgzQ8GFdfr\n9caljwUehmhO2xFww9lUxsh3popuOAtAdv8xNyihQITmWBplKs1hx2pz7Xqd\nXpuoyVeJ1EyWXDLLpksiAlhcXxyY+J9r6UvJrI+dNgphbGcXQoC/SqjoedRn\ndQpx\r\n=PTou\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsAUVJmkSmsdQIkXxdlRPtjXiFSgncr9ENcNZZGAwR9gIhAIWJX5Zjgsu2X2evgQgRAEqiDffq1O1DEUKGcz0aCkmm"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615817314.0_1615818388505_0.6631195244017352"},"_hasShrinkwrap":false},"1.0.2-alpha.1615830332.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615830332.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615830332.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615830332.0","@energyweb/exchange-irec":"1.0.2-alpha.1615830332.0","@energyweb/issuer-api":"0.1.4-alpha.1615830332.0","@energyweb/migrations-irec":"1.0.2-alpha.1615830332.0","@energyweb/origin-backend":"10.0.1-alpha.1615830332.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615830332.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615830332.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615830332.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615830332.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615830332.0","@energyweb/utils-general":"11.0.2-alpha.1615830332.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"9b0ca4312c548681e752ba0e49d0a5a03350ae2e","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615830332.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-OWVwtUo4uGfDZz4cY/ujvmCPeOMeDj6crGK8ebBOUpAOvKagc7FrOG9mj8mjho/54GMgZTL8JTMkuq+ADTtZcQ==","shasum":"eaf6ffec47afced4e3709b36f1c17757d989f3f4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615830332.0.tgz","fileCount":87,"unpackedSize":1576809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT6D/CRA9TVsSAnZWagAAiaMQAKHLmK+TLMY6Nm/0I6aK\npoVsUzTxYmYM3qtGtOvbwEB7VMEO7KJy0+ratWPgLaQZid+uYAoUuaGd5b+r\nOj5MWIP+odXonmEqpRfbrmZ31HA6dSulcr7n9cP0wtXY2YKOhIRCaLCLtyuQ\nunsF8kjGXQ9i5Nor8ynE9V/VFeSHNG0qCd+VScOjVvjLF9sFReiAKcSld+KZ\neqAwI0XR/y/MpyZY4/dqMJZmFklwH2SWZym4eqwHV6phfOnmYH4r8k2t2Qo0\n2lC8oiJXCGhdRkI3kTgsG8TMlh7AC8jgZ5DT7VwoHD9/dxfjmAzzRA4sJ+Md\nh3QF9wrq1UmHX3w2xdyB6vLvYRTB/G0xq2tDPk1Cj6r88TjlqLxpWu0RYajr\nPL6YCS+H6ch7HhP95GYBUzzQB8G/qgFRGTLV7NP1Whl47ujcCEF4/Wfce2Od\nti9lWFSJKPy8PnD07a40NGtv+q5qqmu/uC1uPOp4YsnWlI1gBS53oZsL2eVa\nBtEWGNoOHrEt9kT0gzwEyew2O4/WDW0IoUZtC3ovBKyb04EDX4JfaOXbv8T7\ntleuxISgbkU6wiwZDebLpUlypsT5FeVPHk7buKlXwfnrcROcj4iKKKEBpc8d\nDPoaDSV8YNI9P0JCBlxH2QW0tsybsGFO3yHTALj329KET9fGZDf3w4bOMgja\n0/wx\r\n=ShqJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqnZb712x6wyRkz8MT4EFkS/k6gPtSWYn8ULOpudfI2AiEA+HlaWoUohaV6NdA1MdSqtbG9VIFaitrJIMyS8DHW1eI="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615830332.0_1615831294726_0.8102038135335092"},"_hasShrinkwrap":false},"1.0.2-alpha.1615906536.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615906536.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615906536.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615906536.0","@energyweb/exchange-irec":"1.0.2-alpha.1615906536.0","@energyweb/issuer-api":"0.1.4-alpha.1615906536.0","@energyweb/migrations-irec":"1.0.2-alpha.1615906536.0","@energyweb/origin-backend":"10.0.1-alpha.1615906536.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615906536.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615906536.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615906536.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615906536.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615906536.0","@energyweb/utils-general":"11.0.2-alpha.1615906536.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c79f21392b2319f2d89e967f7ef8f492ed1aed88","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615906536.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-hJsBhxIn60gIviEtfrtWaFr6/Xp//81D+1WSmjYSQgI282ke9JRN8ihYESMKU0qOPTzRivHf/98/rMuj54sf0g==","shasum":"12921de09591a346a725d69b12b739aef09c319e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615906536.0.tgz","fileCount":87,"unpackedSize":1576809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUMrFCRA9TVsSAnZWagAAZGwP/AtTDnb3qO1ed1LNjT7n\nV9H2Lq6nUslDbL7xpGcbI9pHQffud3vWHWEfzlkM4ko99r/9f1E7f4x5pStu\nO+i+JZXnUTorjuK+9iK7tqqRLCAE44NXkEtbAgOpWEBrSOZOHXf3EBm7+Ltg\nd4MtaaBT1mxQmMaTzz8Q+Jo7LI+X0vG2npp6v5oG7V+PQ3StdO5K7t0gUozA\nTLLomksTi7gCW8EhpaAirm0IB+4BLOsL775rr3O3Dtx0VDLATIHHLk2P+FAq\n62wgoKadqVYNmrGBDy3VylcPJH9ZD0zuEfYWb5FUePWIO24ebd7c8ZfqgUzl\njmXPusOsOywdkVAnYGs8Px1iDGio4LWsqrZS6kX8m57o4entiJFXSszgQSRB\nbNbgjzKoUTq9wc9pmBDzw9CObPLYE71YbWoKZVtCuY6LKYdzntkAqNyrAKxB\nbsibkre8hq3102CWDSb50w6RFfrcj3qrra0UXlRJ16veH1DoPX3MYAeyjDTB\nGxl3J2HZOYJEhk8LK1vE3twuNOedO/LC68jf2FkDk+SMI3GxVrh/nZq1igKn\nmT6A2Er2MfAUIoQRVr5Ap3aiMuuwuvC+AwU4UL+L782gZkB0U7R/EGDsQkg3\n7wakQ48H2WJ488mW2ORUREzcDFmqHymRLTnfEXiotHg0j0+S9fj1oYYmsuIY\nObGq\r\n=j4CJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICQjEzMTbTebSOygZxy+/NPLEV6CUMqJtxMy/pSowffwAiA5VswGM/j/kpzFnS5NS7L8hqEYWExxTiao3XEuYNjWRA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615906536.0_1615907525211_0.025981774056316187"},"_hasShrinkwrap":false},"1.0.2-alpha.1615992217.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1615992217.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1615992217.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1615992217.0","@energyweb/exchange-irec":"1.0.2-alpha.1615992217.0","@energyweb/issuer-api":"0.1.4-alpha.1615992217.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1615992217.0","@energyweb/migrations-irec":"1.0.2-alpha.1615992217.0","@energyweb/origin-backend":"10.0.1-alpha.1615992217.0","@energyweb/origin-backend-core":"8.0.1-alpha.1615992217.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1615992217.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1615992217.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1615992217.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1615992217.0","@energyweb/utils-general":"11.0.2-alpha.1615992217.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"a6b785bb492fb8324e13e287c4c1add32cc4e8bf","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1615992217.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-LXcD6k3xwb0v69z2UpT6yVuO5JLoL1tdj4D2AFYCHT2EdEm4Erink/iekOQoUFGZxcSDo7h15grQYf06F4rsDA==","shasum":"33887b6d092002a56215296c650bac6d8d0630f5","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1615992217.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUhnwCRA9TVsSAnZWagAAF8MP/ArHHv5mtKC69SAN5CtV\n59BLK7YWPTLrlJtpMxFHadXZ6mQ1yIVunzPoWzVzQhbe933em7ZL2VPYA2Bx\nOUatcOYPxkDSXo9QTfeHVs0bL9NS9UT33LIBS7ocFXRsqY5QdGcZIMjKOuq5\njrQ5PmTl6Huyo95icpf4aocdWaBc64OmP5GNN7IgbqFK45UK11+E4CZ+5I+y\nIVeUPoj6uCAZbini8C5d0UfwKS19KhciNYEWMVxq3zQ1zKMAMj4menLf2wUT\n8y0TvTeCe7i6OhNM3ta8SfecvjhI4/3IKQu+AulyuHorWOC4f09qrY4tcQhj\n8UlmwzYAVb55FUiIGaRsICXwHEsg/zhkAwiFheWB0TPINwuZvRVfR8EOQ4SQ\natICotLXdOjhLjg+7JVh4JMyRb+sVMA8mY2uuDMEhCf32ZBJ+HLnBlhC/Mzc\nvTwETLg+/J0OMwkNAAvcWqHY8BBYupl0SVWTFmErn8Y74+KWUFcJjShqZQYL\nI+RUiswIpgOKrSDspXBHwx6NHcf2l7uslLF49Ed4lt47EOhFHqnc6Cgr8PRr\nuTQgmNuCpIyP6Bj5oUbIRxv0ka3oqNMdWllFw1pe9lz7n3kJ2iSdNi+0wld0\n9ESAnWLhKOSjgrgyrEb6kAfq108rFJ2z3pA/g7zhaTCYrSWIajvDQx5ooVXg\ncUwy\r\n=MfUA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJAGILNLDRJg8QFNcFinJh153Yu7o/k5JVcAJfHH2EnwIgX+VnbXi4AVmcCRWJ112usVHYqXjBRl5eskh8u78gmWc="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1615992217.0_1615993328453_0.44770092338392975"},"_hasShrinkwrap":false},"1.0.2-alpha.1616078864.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616078864.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616078864.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616078864.0","@energyweb/exchange-irec":"1.0.2-alpha.1616078864.0","@energyweb/issuer-api":"0.1.4-alpha.1616078864.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616078864.0","@energyweb/migrations-irec":"1.0.2-alpha.1616078864.0","@energyweb/origin-backend":"10.0.1-alpha.1616078864.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616078864.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616078864.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616078864.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616078864.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616078864.0","@energyweb/utils-general":"11.0.2-alpha.1616078864.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"397503ec16352d56f53807e9e37d399d85b1d770","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616078864.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-nkz5XXgoafRAzqk0Wx2mFNSksh80iprIpQ38sjzfPv6wkW9TJDKVriduoOjn4It1j50V2evbTsNpKNV11fYvHA==","shasum":"b3c6cad97acb18d994ba2a9e83d427b110964976","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616078864.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU2xsCRA9TVsSAnZWagAA/MoP/3sjplSuaDvMXBLEkoVz\ne5MpXb3J59LSt6Ow7e55t6GyS5M3zz0UTY/9TwL4kUEXZ52CKFlv6XMh28VC\nAW55/V5jVWOWjG1xlrnVsVdjWjoYdnQv8dTRGxpHtBIoCRJN6KzcuVZvZG2c\nwYFIn+oAiN18Vi2e3UmUTXzao7YpnXy2uo9CjKhKwIflK40bS/udQJNRBmwM\nshqNSOeJDesTGgFOaeN2XnqjCnZCRbcHpbRQd7KQilYNHctN8AgjYNM33iFP\n0zJR4Mvpd5L02SYzZP4ZXVrVXQCUZVLc3W+VqXxz+Sl188uE93rrlVMcZpoJ\nj3AYHoVIxmUMrjz9Pimk3tQclrQgA7S4dMnwbTqcpb0IcFtSwGt62pS9zj3A\ndAKAwXJsozx75w4VSM14xd0Ni/zUCO0ThNMQHKAS7jM2gqQRa1q76PCbG28S\ngCiMDKV2UZQ8hWftfjP8T4/BTxAyEDGhqwpDbkwcxENQ0jEh1m6AQXu6EyrV\nRWtmC6fg+QLRcfroHQGFes+Vse8NJx9rHgmPpc9ukF+4v0RjA/cp2vXPm27Z\nV1OGDGAUZk1l+mQ6NYd7UnjsRHTTL91dAzUe1jE2WOZ8PLsoco7ki47iRJ9z\nCpcBGEbEKu0+9PXGcvyjn8NMW4+PVEmAmLKKRDdHJ3EXkPuxNdJn/hSUSBGw\nAgA4\r\n=RojR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh51tMAhKDtul1jixggYdvAoll6obju2OCs3poxJbQ/QIgWIGDuvzS0GaIO9aVRcw7D8UU5bBTeVdd8kLAzo0wwZc="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616078864.0_1616079979489_0.5298640294110746"},"_hasShrinkwrap":false},"1.0.2-alpha.1616081917.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616081917.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616081917.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616081917.0","@energyweb/exchange-irec":"1.0.2-alpha.1616081917.0","@energyweb/issuer-api":"0.1.4-alpha.1616081917.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616081917.0","@energyweb/migrations-irec":"1.0.2-alpha.1616081917.0","@energyweb/origin-backend":"10.0.1-alpha.1616081917.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616081917.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616081917.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616081917.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616081917.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616081917.0","@energyweb/utils-general":"11.0.2-alpha.1616081917.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d9ec083c74d951ec0bb08307430da779f67b20a6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616081917.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-wFvHKjQzay1fXk2qmauNqaBGVs+tEajLRfFkUU/cny6i5cABlGt8+qCEZqbKjorxBHZBP5cmTUw1LxMXm+u2oA==","shasum":"345d280304aa2e5efb5190256db0638b8429a763","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616081917.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU3gfCRA9TVsSAnZWagAAohkP/3s8gNHbaxx/GSbiuxfF\nkKxcuEzMcbmtXr2RwgnWYa7H9oGHgkJDJfLPn7x1fY56weiCJJovYZ8HqQRY\ne13se90qkQT2SXs5w4HgQ5dzgpov9flv0ffF3yNR/kIKl22OUmH+N/635Bwz\naUNDefZqzz7xw3OolDFuKZrAgGr2DnygTD3qn45QVl825BcMYYNCtmWuXGem\nZJp6BqQTX8Kj2XqL8GVnGXzufEho6SUpdFY0LwfkGOPoasw66BGv84BaGFoq\n/MBDAPJz9DHc/Zxrh+W3dXkZ0tqeKYX4Rees9jl5FPFqiEtJ7G7wrob5Grol\njVD51+KBpw2Y6bxBGLl2EizAnJ8sZqpgar7IRr1WQFPV7WsxKBPncAITtJEJ\n5xVTAVr+ySjj1BYOjDOKmIAMJ/77gd7udvS47kAP+WeE9vqEJHydox/9uX4F\n+DJD5liZRUtBhYH49eeMAnrtRtjPZK1/qLKNS1a0s4YN6lC8q9KT4DRkw6Kn\ndHCTeSFgoShWO1rK5poSncRnxMB4PjZNpcl61+w3Ry22NN+atUmbxadQOCje\nKj2klbN30p2vcOeXo5Jo7H4um7d/zYozb9CyoXKVb9wvtnEk8m1djqTRC5JG\nQhYUqV3qOvvpg4K0sUDLZdPjaPP/E4lisBdZy8XMIkgbv83Whbvduznwpg0t\nFkDi\r\n=Ncat\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCstCQhmp8CKsvW45S7WBE39ou3lFMiGMai6w3PCc8frAIhAKLOVveXBsfQpMUcN6+gNNDYT+bWU+AusgJULBXWpgu9"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616081917.0_1616082975400_0.03147249275387076"},"_hasShrinkwrap":false},"1.0.2-alpha.1616089562.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616089562.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616089562.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616089562.0","@energyweb/exchange-irec":"1.0.2-alpha.1616089562.0","@energyweb/issuer-api":"0.1.4-alpha.1616089562.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616089562.0","@energyweb/migrations-irec":"1.0.2-alpha.1616089562.0","@energyweb/origin-backend":"10.0.1-alpha.1616089562.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616089562.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616089562.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616089562.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616089562.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616089562.0","@energyweb/utils-general":"11.0.2-alpha.1616089562.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"afeee31317d0e2b43f6f0bd1a93d76fa66693abd","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616089562.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-v+eQM/W+kvi3+2etCgaie85a8CQMlKP5vqAJMNk1Rh3IEK79gzhWspHN6y7bsjVh2aRZUWvP6tfcCA5qWwHHcg==","shasum":"f6ac7d2a1171eedf06a3f7d92c151fa7dd6f6ff7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616089562.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU5XBCRA9TVsSAnZWagAALnIP/1m3Z68OCozRgrpP01o3\n5y+cDHNmZ9q0kgc19ExUvhBM9aigHSMvr0xf2wknKrIqMDBgqsRNx1xkn/bS\ntPb2txpLao9RdoCmOuU6fxsHSkMVlOZhbK+mwBi13ZFOMM2hs2d3qk5tsHzq\ngfj/xYTc6xpVh/RJaLhn5yE1D99fBiQOX40/ojurvRrdvhpfEq/LuHvHKD9I\nw0STysvKo/J7bXZ/LPxoGzi2f7GxTHQN2iV3Jbuior9LSjYcCwDv1FBIApc+\nbpS33kpRW1ZrWbxVHQZkYoul9FPHM5d7Czy5B9TjlkeccZLo1bnvkcrnP/HO\nnXci8qVdOhEgiwYxJdquxdKO9+n4hDQuGU3GmmrijHQi40QS3nsudeH4jp+i\nXnZo2TZjCxp1vDMQTm77Myb2qQ/cQoVBAODA/j90TraJmI2/5BxKlvRIFlx0\n+jWxix4+1qGzxlIEe2FDcniUQ1+zBdiWf3iXYM3x8Qt8hwySKEtEB1tn07G6\nz0eOvTc5MOJablPHjj6yPk3Vnx/Roc4hTxUrpEMKDg1l+xt5Njqb1+lSsaTN\npGtCR15Yp8r5p0smvydVBKkwrFjGwK3IfbprOJ6niNm+5ftlbxOWysIA8OmA\nxJ1T8ma94fZnRNv0NSnV9hd5N5vLGUvzZBG2jut3ZnnRkF26TZBHQCG/WZym\n0nZ2\r\n=Jtvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFCD8Z8392j07BczmOV/J5buIP6Yo2SUe6cymw+GlNBSAiBx/TlQ8zCD50lO1xbmfDpVHt81zMLDPRA4L4oLmo1aXA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616089562.0_1616090561045_0.6730052740516703"},"_hasShrinkwrap":false},"1.0.2-alpha.1616151730.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616151730.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616151730.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616151730.0","@energyweb/exchange-irec":"1.0.2-alpha.1616151730.0","@energyweb/issuer-api":"0.1.4-alpha.1616151730.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616151730.0","@energyweb/migrations-irec":"1.0.2-alpha.1616151730.0","@energyweb/origin-backend":"10.0.1-alpha.1616151730.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616151730.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616151730.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616151730.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616151730.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616151730.0","@energyweb/utils-general":"11.0.2-alpha.1616151730.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"824ca323490ae056d0b5cb947430a083a3af3103","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616151730.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-SKP+epeNQ5kvFjS8GJogFIYjO03nj281ijcnst5UoASxQ4KzzncjDEepKczxGR4LugmTBRMOaU7wUePOdN5krg==","shasum":"c833e9d20953058d051b9a145564041a35d4af47","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616151730.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVIjHCRA9TVsSAnZWagAA/40QAJKcLaTjWMxBqYAiDoTr\nA8jTDL3hiXhewUs1MxxU99VyYW25RYPaFY3pY64H1qWw17AAjH7awClD5Qsr\n7fXoONvnXiUtR8ifANX633aFWvrUjYl5ISfCTuVQxmJ7z/+0WuMovQFRLl4I\n9zjDIkoOeHDcAo+5weOW/YqMErM5dB+XFVwKnydB/kxA5PmfA/iDM2C76L5e\ntY+IR5jyVFXAHB75lnvYHufV2UYcQWOHlD2FH107zwohCmEZP7jpLbcZNf6C\neP+oSw9q9hQA/zYZYsJBl9GhLPrfXbGodBL2isjOkunnLbNStP2ND0BD0GW8\nhRXhhpMTCH4YX4EplMpEdF85bP1iB1Uwx7V2VWOacZ/OjYa9V3GSKJCjmiS/\nhp7sYfscsOStAHtKPzPKo7rXKyO7asypPFoLrFTbiDDCUxqOHC484pyRoyk2\nXToqgS2oI92dBjPWT/Hv9eEkBRPWSWKBrO1JphV8d9BAAcO46K5Z4M0FKvrV\naRF6XHDma2RPo5oDdzsheSpOOnwKqMdX/7hkWNwa4MuBKls68qfGs1fQ3e5V\nA9STdo+0hSOI09eozL4dGJHgdZVDbX6HPGxorJRJk5ohZKI+t7wlCKiPiP1t\nKkmwb0MBH9DhVjS6h/SVWzjDanHV99xO3uehwIdghGxDnRSV7OabGzQ86tbU\ne00b\r\n=CDUr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB+etkwsR73HWmvhB74/ka+77OiMiVuv1yDORyziuxs+AiEAygHjQNUm2Tgkee654NA9lVtqmShdrLZPBg0FiWUUK7A="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616151730.0_1616152775152_0.5839002667118953"},"_hasShrinkwrap":false},"1.0.2-alpha.1616156720.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616156720.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616156720.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616156720.0","@energyweb/exchange-irec":"1.0.2-alpha.1616156720.0","@energyweb/issuer-api":"0.1.4-alpha.1616156720.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616156720.0","@energyweb/migrations-irec":"1.0.2-alpha.1616156720.0","@energyweb/origin-backend":"10.0.1-alpha.1616156720.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616156720.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616156720.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616156720.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616156720.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616156720.0","@energyweb/utils-general":"11.0.2-alpha.1616156720.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"36d405122ad09ed4bbb08e3c8b40a5779931ceef","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616156720.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-btRLYWFr/7yyBpw6nlO0zs2ktXgINCTSIGBuRZWOjbxHWcg4wpnZLUt0hTKle96uT0XM0/S1og08la6awZSn5g==","shasum":"796012563896e54773b390644336e779da7ffa96","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616156720.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVJxfCRA9TVsSAnZWagAAKwoP/RATWdP7A+OHGiTix9WA\nbHNEHExvKLD3i8/MXf90vJ4Hxw8GsoDFCRPDd+qx1Pbc+5VsyDsA/PVxF9hF\n3qCLfgwEULf3ow1+EKpUZOPLTNFpR5i9Mbk180b+DESAnMq0uPGDZfL3VvRi\n6rgZKh9IhwY/MSwJm21YcVY4kgFvv9FctwXrMOga6oZXJTIRC6h5o6XASIsn\nSuzTohRwH6G3KSnHcIWV6p9WdY4RYO3wg6wSEH1X+JF9epRhBmXDfzvVg4IW\nq+puUPsz57PpjrJO1+1qkbjKSL9Nrbe7/TfNKmHT9GwQWDUSDhslp3LKq6Jh\nyvLOQ0MgRX26Ldy1EWsLR3BUHX20kD/H5bG+bONgTRnFg1D70Y3LnpAKBjT5\nyLf1LVGJSv65+20OBug2eBnlipxzhlts/o8B6GSNeiDa3TtBXiJPno4Wh0Ot\nzqScRjYzDHtg8AHHuctEwpdZzvdIK872klEK8fQbN7JuW/8FpxefCuVNIhVV\nO3+xPmDg4qz0rZA7rT6ZdvRXL4xBsbvRShGbladARH5VYzyEvDwtL+WflEjb\nY/e39IWKQUscQrCXmUUbZTDrCOmK0moxfCgmd7Vm60LZSSm4rUynH7X0hbxf\ncQB+6IiD8YK7fq0MWk1wicJglbpcXX6gqCja6YeRsI9tMv9WkjJNCFzY6Hj1\nLxES\r\n=nzPx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+AsACb2C6whIMgeM0hzfWr72GDhmN8Dv2WlnFiGfOZAiBBcWEyTXY5CihQd0/7obQxn4b7nkzy7YqShnHkfxQ23A=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616156720.0_1616157791231_0.17113232608456452"},"_hasShrinkwrap":false},"1.0.2-alpha.1616208888.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616208888.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616208888.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616208888.0","@energyweb/exchange-irec":"1.0.2-alpha.1616208888.0","@energyweb/issuer-api":"0.1.4-alpha.1616208888.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616208888.0","@energyweb/migrations-irec":"1.0.2-alpha.1616208888.0","@energyweb/origin-backend":"10.0.1-alpha.1616208888.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616208888.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616208888.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616208888.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616208888.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616208888.0","@energyweb/utils-general":"11.0.2-alpha.1616208888.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"fccd0062a6d8ac835654eacddf0f8f32e6ee1c6d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616208888.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-qYLN80dpxVrgOHnbzLqXbpMyR1dyrqmhF8koMTfZ0ZX3AIr9ost/gkWuh3/pw3Ihlf1sjg9mkrrXrUpQc+qHHw==","shasum":"0b01c34a061a02305085bf550315bd9d7d25ba53","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616208888.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVWefCRA9TVsSAnZWagAA8dwP/0Ay/T3tC/b9rlLiXd3O\nWpEubhiVRmxio9owSTu7sHHd8xbiB5gaA+sTzop/du4oijDxkFe8YLa3HKTn\nrnO9DRd7bc2y7oVSsfog2amN8guc6k5ObZl5n0hfjZlMLNVech52FkESUGsS\ntHGXHD7536UC5hJ5ymdwadGBBXa1KqSb9YOD93tOdoZ0i6RmrYQPerIttxG4\nloBs/TYbBbJWQnJWHeexk5dC5wE7uqmIWP3UGNI8R3UM+Ba7wufVeDr4DXp7\ntse80NSCoFms7eXPNQ1/8/IBaABqBGjFogYdiw+sPMZqLiwFJV0+kugFp4tZ\nmpxaWw2mq4wSrKAx9u66UoIUFtHbrp1z474EeXpSQJxqcfKyBkpnGcIelTow\nAOq1QiN9YkL8VeP8dPvMNP1Xm8e9HoySUH/4AV1m+GW4sMyIrRkuAy0HHgW4\nYKK2XEGuP/9vJwxKFBsN2VNUMenKn09Rhr1wBHmaNRHL20i208BwVii4YigU\nsxsgepsvPw0vNbPz3l+J8Zem8qjZoU0ktPrs3RIVk81RFQsnzqZB2WDI45nk\ngUgueQoaLZtWXDGf+gWAOwRHgCp4WPElQUwA26/bPi6qMcwJorleLn7QvniV\nkciOdJu/Mos1KAGDSdryhLctfZRJnaRy4emBEb8qjK9vrYZgzcIDx1J3SIrP\nenng\r\n=cKGp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErNMgrhZ/gIi/hcuyZV6D0vHkGtY5GNPX6N2nct9XI6AiEAiq8w6TgHYd48f/1RTHnkpDm8rOmyhiydgJPXaVPzZ94="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616208888.0_1616209823438_0.3735131847830666"},"_hasShrinkwrap":false},"1.0.2-alpha.1616214242.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616214242.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616214242.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616214242.0","@energyweb/exchange-irec":"1.0.2-alpha.1616214242.0","@energyweb/issuer-api":"0.1.4-alpha.1616214242.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616214242.0","@energyweb/migrations-irec":"1.0.2-alpha.1616214242.0","@energyweb/origin-backend":"10.0.1-alpha.1616214242.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616214242.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616214242.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616214242.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616214242.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616214242.0","@energyweb/utils-general":"11.0.2-alpha.1616214242.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"966f80513bb4ecdc27dab1f9ce41ab64137b3740","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616214242.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-U/lTir+Y5eudEdkxG9fzRnnmjS7izaK2Co42Tn/zNhJbbHtOW/IRhpEX1cRriJ12PyCEMWIk14ZPezg/8L0afw==","shasum":"7377c9d8b0d1668045e6f9b0f2bbb8107667b756","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616214242.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVXycCRA9TVsSAnZWagAAt9UP/1nJtgoQV5nFcamfgq03\nVL+51MdQ8u2VWHo9BKjjzqj8qLUD3m9JnkFsT/p8e9dcIeS97XfvBnXpVmMf\n8DPRn+iupLwFqscP1Tv0bR7aDMFzu1S+PIDCBn49cEA45z+u3vnPFuY53h1+\n2PF8+mS4d+8l/mVtOBQZtesn41bUTCVuSfw3Y3kWofi490v4MS/uZPT3Odlk\nKqi1V7nJ/FVeJ4O510r0V8IXseD5pkFViTKafC65Lp/NX/zRHcKsprZl4wEm\n2VochZp0hTMHh4WKIXCsyAXaYbrhZNHrf6CHip6gT4UT999xyRoANIS0Opu7\nE1cWer+Qpqg3hP3wQVC082F2caKT8q3Vt6COEXjaQz+YYtWWyc1TO/zFCD/W\n7ZAQNmS0x5MhoXmVx2rspJLtY/lNpK7Z42sEu3FJk/ftty/FubXW+8lvwwUK\nI/V/lnle9202M/H5Rgsd75uVff5HQhQYic0m+akaxJ3Ju38ODG+I3CYE9Oc8\n2qFTlE96mBRdGINc1OX485Fm0rRzep4EVsyANfQW1HuSf8xFrPG8S/Ve+xUW\ndvT7sfkhnkGlWFx75yaJlj2Hl9g/9utkD63IPMdBZJhBK92P/mznOqIkVi/x\nNzv3ar6DoQXLfqlNTPpQj7TysnP2do+326kX07OuEz1EtzvaNgT0ByjY1CyU\nYDg0\r\n=XhwA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkkSA9zSelMho8CKOcx/T9b88Um9nYo5zH5ZtfYNzpPwIgDHATVHpg/Z5/G4VIcrFG+ZuLomaDDkH1CIDKfPXRUJ8="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616214242.0_1616215196052_0.4111724805660957"},"_hasShrinkwrap":false},"1.0.2-alpha.1616230912.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616230912.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616230912.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616230912.0","@energyweb/exchange-irec":"1.0.2-alpha.1616230912.0","@energyweb/issuer-api":"0.1.4-alpha.1616230912.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616230912.0","@energyweb/migrations-irec":"1.0.2-alpha.1616230912.0","@energyweb/origin-backend":"10.0.1-alpha.1616230912.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616230912.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616230912.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616230912.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616230912.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616230912.0","@energyweb/utils-general":"11.0.2-alpha.1616230912.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"e511b5381bcf2ab4ac76589b40ca979843b4525d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616230912.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-jl+IPSYZwK51FjnTdN6s0V45tQ/fRk+pzjmEQFvHeJXRVXUfp9/kQe5Uf7HNLz3esj2L4+7sVMN058Ck6ZDOLA==","shasum":"658b1d8d4a5ec07de73c44e1f78fc3b56619fa7a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616230912.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVb5YCRA9TVsSAnZWagAALR4QAIuGMCMLw/GjYpgxIf5T\nwWU1mfAuIJw7gBof+7YkFfDW2IR71HbTudsyfAHgsZGfywfdgBM0zeGxKNhD\nXbBP6S/aQXC64HLtFy26Ys4G2tQGhNcko69ffvJfCDr0bGtCGKigd7g1TdFT\nFzWKRm2tDfLwKJKspaZPUIygAB1SVqyHlItgKlIMbmfAqs2fTRPmBHCqu7np\ntsZTDsD6QpPPH3l3ZHnnyuS2derjPJeRZViKs93eAOwV5Pzgzt1l4nHLAA9C\ngF03nZBJj7mzHlhQb3vCyuACmKLPfQWVb+pLk1dZ026h/SOpcpIouKou62EM\nSQLfKfc2/FYsLvkyZUwHS5DnjgyFun3ZHdWmh+A7q3iga67WxVu1SRhwy3H2\n3Vgy9fum8nhArdKYoWMWnSxLv1mzXSjCMy95bq27R4yMpwne5hmwnfYFZ7ag\nqcrtDSuwfPXmvfFNktoyVRJiWBu7Br+15nP0KN+WUNo97Eqmavfg8MgBtm4e\ndRSuIu8u3Ad59EaoTfb1dHcHnt4I7bLgGqIdQjY7Eo+XIDwKcke8C+9ioXMB\nXqZqXwYNJMnwGYTgfpheaPtoNPVrOZ+xz1KPJlF3buC2SAEIExcAULA17HOg\neasonH9DykUp+x6GAUz96Rpm915Aq2WLHrwDUpLocvOJZzgxLCe7NrnPAS6k\nGtG0\r\n=EKep\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/3tQmZmO9aDIUtZxfSWskt9liCubCWSfJyXNC9U/efAiBFGAFDZOt3GIX6ElUDKS4JkFTc2hJbncUgqxDo56YX/Q=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616230912.0_1616232024077_0.9423559985075225"},"_hasShrinkwrap":false},"1.0.2-alpha.1616234561.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616234561.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616234561.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616234561.0","@energyweb/exchange-irec":"1.0.2-alpha.1616234561.0","@energyweb/issuer-api":"0.1.4-alpha.1616234561.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616234561.0","@energyweb/migrations-irec":"1.0.2-alpha.1616234561.0","@energyweb/origin-backend":"10.0.1-alpha.1616234561.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616234561.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616234561.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616234561.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616234561.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616234561.0","@energyweb/utils-general":"11.0.2-alpha.1616234561.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c405254fa6f8b94acec4015bbe460a9a3f13e652","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616234561.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-M5cXrQnq+ot1nryUpHHGO+3NHysrDnr8TdIpsXtxeJTOcu6dYSMNu0633ug/bIskFSSJBBzExD99GbtxjPc1vw==","shasum":"93fc1036c753282f00a25871565d3c516c57e472","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616234561.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVcwTCRA9TVsSAnZWagAAn8MP/iz09BUtNskqTissAtgX\nAKUUdvOoiP/9oohilmoi7BO+qWddQLtfEPASbeAirg+nLVelrGP0HALNUOfO\n4z1wyPWx7MIOs5ItZutNP1GzBOB+Rcz8nwNtaaWUogz9Ca7XLH/unMDxm0nD\ngIaxHp25UEYr/aJ1c1UfyJx6xvfjK5oKyqJ8D4x+L3KQ1DvadKujEyX8InZe\nmHSXMg+efBfmZzaIwjpjq1+7+q02R7qxZ7HY8ZGXS69xvl1eHUP2h8LLMwex\nGt7UpouahOoRGByOy61IKhgnTFW41e6WdrF/ykKY9DDCTzZ4A80aKwZrnj5j\nbrvq2Oy8pMv85Rz+FBUsSiakGP3di8lR/m7oAhJiX2nHX0+4bQZowwaFCi3D\nCq47szb0dk3f5eGd6abgapfHIelIwqdId9K4ck7CNL6no52Hyqu1kq0Egg7A\ngm7/sLV4fEasnxIA+SHt2SSykGLXg05EZ/HTgLYZ5GCyb5Ygx3YlkEyToMSL\nMm3i2xArc4tYP3vYcXk/bnJ/JVReYBzrvj3ykRHqobUV3zMLix3ESNUhxRiN\nvIe/Xj2hlT/e/XNVJERQEJL92YhLlbcdPeLKLVyu4+r3PQe8Z8BJZK2m2e2y\ns+zEd3yBrqBInTWnW3ElrM5C1OMYXUfunzWsKzZZ3E9O9BZ7srpMB24Oai+7\ncrsy\r\n=kPWx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC03La0B3kOaHdf1e1qUNYcd/DH7JJPq1qUrMJeK9dYAQIhAI6HVKEc+beWuuttOXdqkbEZOkIS8Dl1EBvIS24ZorIT"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616234561.0_1616235538616_0.47959169401168555"},"_hasShrinkwrap":false},"1.0.2-alpha.1616237909.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616237909.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616237909.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616237909.0","@energyweb/exchange-irec":"1.0.2-alpha.1616237909.0","@energyweb/issuer-api":"0.1.4-alpha.1616237909.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616237909.0","@energyweb/migrations-irec":"1.0.2-alpha.1616237909.0","@energyweb/origin-backend":"10.0.1-alpha.1616237909.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616237909.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616237909.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616237909.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616237909.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616237909.0","@energyweb/utils-general":"11.0.2-alpha.1616237909.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"0827a4122b58d1ebe2b7ed51a6cff93d287b9e30","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616237909.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-Y91JVoGobo5nSKgDX7cauBcdBRdFbdsXn4nLQJygnjwGkTe6b4xh4cue0iETjDmKUPwGyfMAwFX1FMhyGRw4ng==","shasum":"b0065921ce0cb8d070707dd697d318302fc86148","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616237909.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVdkcCRA9TVsSAnZWagAAlfcP/A15JQ0Az9AeE1+61YrE\n2w9bCELYM79QVZA7DYpynhI0LRiIfvA4eVeOaThQChCEXpTajEn6zZMRhywS\nhfB2GJpWUU5RRPe4FwmryTIjb1YD4SZR2WTr72nOlc++cL59/4dvBclMuRcp\nOQxW/wbMT+pcnTaJomq4Mz+ycHMYvNDjuZKuctkLdCHercIqx6xsUzmJYYdN\nrOQubmOhgM0P0uWps3PEwrHvHXp+Lt/N8R0QhjVCn2E6+IDvROfFYiQaiuCd\ni7En+K7u0Bg9tOQqn93oUJ8vh5iP94zbua7cXzfXCZpiyjuGvlZXy7Gk75jm\ningTEAC4CAszkQXxYbXZ1N53PZYZWn8PoO0dC2nCt673YGgNU+nzjHN7PknJ\neyUtB60c/VS3oVwnmTxRNRdtnYmitEfGB0ZzNRZ0RkQnHcAD1jx50/1NBhFl\nwjqTjJBzI8svpedczs9UaIgi6Kd69GPv+h53G//7ldzZLeqvppKeEFMSaCQg\nV/14rFzV350/JfXMhbY0bboe5ulCi7F7+XXi3LRD4r4lNB//NAVjho9ciUiX\nVfJaDLHPZFhaC7WoaLLqeDGfmmGFfkmHol6cYwYQoZqB6ljZdHevDQTyMXeK\nEsUpEbuVMb1p347jdoqvTjZb6sJOFY3e22kTuLqdJmVhwf7p4bFG/GN209au\nNX31\r\n=WKyN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGPAH7p0dMTRbkER0xDyuRur8BV4PFk5W75OFQi1keHgIgF32/1u2pJSJ915CY2uXSs7nci2H/9cw4JafTdvUAP18="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616237909.0_1616238875786_0.8005529446375119"},"_hasShrinkwrap":false},"1.0.2-alpha.1616242094.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616242094.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616242094.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616242094.0","@energyweb/exchange-irec":"1.0.2-alpha.1616242094.0","@energyweb/issuer-api":"0.1.4-alpha.1616242094.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616242094.0","@energyweb/migrations-irec":"1.0.2-alpha.1616242094.0","@energyweb/origin-backend":"10.0.1-alpha.1616242094.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616242094.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616242094.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616242094.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616242094.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616242094.0","@energyweb/utils-general":"11.0.2-alpha.1616242094.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"407f5643fa66eec56dcae4a8ddc08a5e255f8412","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616242094.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-SdpW1YKLEvFg1OJamIzCI4+BF0/3vRQRywttcc9Sxq88vL9IjkE7rHAFOemFKZNoclKzU1J7XK5HqAQfjqPJzg==","shasum":"c94ea6bed18ed109e6288eeff02f8dca196eda0c","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616242094.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVeluCRA9TVsSAnZWagAAhiMP/1n0U0Acz0OWAWZHDtgA\nr0tZJgWUaUfrscVwd/DsMZnFAMecomljsWwDJqrs0f+7PFWDL89MPiGm+M1P\n8oZscFEtrF7CS9uAVMIptV3itEJYFLcI9C7PypluBTdV9vZ1lwlNII/OjOGX\n9YTaHeTO+vShMAH03lt8VUnVkZgoD8WXvq9ut5za5OTr6ZzORcyZMd16jdVw\nNwJCBTXiYU7CRd+n07vKl6rLJ+g46uEgVFpc/t0DgZo+rpSE/bm2L1Jo3FAN\nj7c5YaEKPoIY13VaK0JAnNEk3o5WmUakcsqCzGR+5mL2VK3b99A2qEnkc+wQ\niIYgWyTNO20DVDCaj09Ooa6bkwvpqGEB/Z61KTtOc/ALjHXqK4zI1Cy01H3+\nLzbwZZGEiJLOEQIiEbVSLQH+ks6U2ndGtG5QZQpAA9DfudgIdisw6Iz+hKK1\nEC3Ar8tTsuKAOVjjZutuBa5zgVxEyZoanDTd0boBf9J9fjgLAfbxVwZ1n+3t\niPYyfUb2mMPkj4vBrVRIB14ubrycK0LC2XQdqwb9RE7A9j5u0QSal1ntvPuW\nV1RaBp9If9dUaJ1d08cZqkyb9mF/sFcOgjXH9nMRZBkTSx2VwhbtIWHgUnF+\nTYVMqGLEU43VsdQovMz7nWZVVxgsqj3KqHcioXKsePBleWOrBn6fZzEQeJBm\nczmg\r\n=KoOT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9cO3GRlDQo+QTBw9G/5hLs1uDAcByaatyhPD9gAPk7AiEAtaP3vifHywXO9j8KOLlD6IAnL/5nv9x2OqNW37SOWos="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616242094.0_1616243054156_0.1726458878145749"},"_hasShrinkwrap":false},"1.0.2-alpha.1616246159.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616246159.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616246159.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616246159.0","@energyweb/exchange-irec":"1.0.2-alpha.1616246159.0","@energyweb/issuer-api":"0.1.4-alpha.1616246159.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616246159.0","@energyweb/migrations-irec":"1.0.2-alpha.1616246159.0","@energyweb/origin-backend":"10.0.1-alpha.1616246159.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616246159.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616246159.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616246159.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616246159.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616246159.0","@energyweb/utils-general":"11.0.2-alpha.1616246159.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"4d8181d7f7d076e9b24f2c1d223cd7aa4093ecf3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616246159.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-5Mm/t/0rSkJLFrwDYs1B69Pcm42/fze06iPsp+LU+a58mK9ppT91FeHUmBUrf2Lnge9kSCugVuhp28x7g4JbYA==","shasum":"7b428f30e453cfb5806c7c2db2314373461b0a04","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616246159.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVfl8CRA9TVsSAnZWagAAbKMP/RB1lWviyUKbZ74A27mn\nJNBoTkbbg6GB/TMHra8bW9ftSVpyCM2yTS48d2qhQakY5RmYgTG3bsPxPwa4\n2gV173Pbx6rGsX8VpV6MsIp8pCB6N/pgla7mg6tcuv9OCcI5hS5Kwc0EnrkM\nHXTyPVJ48FQZYOWze3LyOZffKx5sqXvXdkmxIoJIqcGTYM+4+bsT31JYQjr4\nHzZTgDMVdIwtUMUwd15PnTJ4Z6oN4oPRjWrRT4YSGQLG1epN3Yl7X7YJtqJC\neFi7U8/4yLnxc/VZWHI2sBfHeE+iX3YTjdvTWIX6iQzRYG7cSTvYc7Q5FzWr\nIXuxp1+xNZ5S4kFQHU1gLbDFgq5vMqJhqY96j3iRDpzreLOMug0j56hc0O0W\nI9XB84sac9a3Lhi8GRtBUf5LqY349NEMSNcVDexgbgtbTrpU2f3cFnHmgVKo\nkrR3qbXM4ZydE/fjUrMMDc6ZA/e6zmtUNwgtcLdlYJfNrvPwOevR3Tcztbhm\nkRQ9C9abLjnvbAwV+rxu22g5OzK1C03ZWntKgG4j1iDBbExMXcWk5uZWjyGg\nre6BLHqjwnrrED8RKfm97rf25raZu7kcp30z6OvMMrtHIWDMjmQuqWg+rFhu\nAVkki/nt6O4Jfibs+TAu8G0UAXpq2CD/CyHBoWSJBQPdd67xp9CDT15DrbZS\nEwCF\r\n=L9xD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7TNPuXKS0C+XdjTqnEwnO8y6yJ9fGIyQOl8AC63YmyAiAbQO7N0MejHk0ySazFdjRW2CLYLlAmvohACSD28YbhTg=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616246159.0_1616247163572_0.03102219711439158"},"_hasShrinkwrap":false},"1.0.2-alpha.1616255628.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616255628.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616255628.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616255628.0","@energyweb/exchange-irec":"1.0.2-alpha.1616255628.0","@energyweb/issuer-api":"0.1.4-alpha.1616255628.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616255628.0","@energyweb/migrations-irec":"1.0.2-alpha.1616255628.0","@energyweb/origin-backend":"10.0.1-alpha.1616255628.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616255628.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616255628.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616255628.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616255628.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616255628.0","@energyweb/utils-general":"11.0.2-alpha.1616255628.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"e832473d9c714d971de4ffa982336c7cf0f797a9","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616255628.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-5tw0bnzkpXqhvblT+MQp5qi7dgPLd7XyzmI+LKbIqlFMiQt4TBTtVQmelMPoLZ1kdXdL2GcAOul7ouVm5/twbA==","shasum":"1ef90cc58d775bf728eefa147db79d441ffdfada","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616255628.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVh6KCRA9TVsSAnZWagAAHmwP/0IuehkQs2EaWlwI29er\nvPh0HpoqoC9eZ45NDhkK2BmQeFnCse982K+c2TiZ/jVPmpXJKhYcwJJNUD6u\njPx4eA5AYSg6fy9aBoNhb8UCMidQsJA5rlBkh/OF4fZgjNfj0wxLVi8KaB6I\nmqMF5DNGt6/C+eFmLEIGiF/i/tZoE9LAFZmsCqYyOs1y1Zd2jsgDqEv9wNGO\nMArK3bKK9WYzJgDF7pboKxnuMFqM9qbLc3PbclCe98d+PVu1V6KaVu0j7R0x\nzxJy803gPk5caRnccPLFCSsqa6LiII/oDCzM234XdypAInx2lpWd4Xwh6qOG\niAZVqq2Bep2KQsYlBS+IbtuYgf7JvPf14KaBh/BGWGXDOsW6Fcr1OHxPGwYj\nEwlSbYtVpQa8rhGikXP3dUfL25RnEUqTT437iOfZ10bCCxaejQh7Qj4fdIaX\n1UIO30EM6BpB5XqVRAh5D2697diBJ84CLFwj1+nIIIXiOKipwQlUFdx/74wc\na5RPMSIvImPF2OLIDO/TjUusRC9Z51Ogu+Yw9Pv7auugrDutDM5tmbm4MyM2\nISwrAxtUkCXcfjQFuXn7bNcHi38zGa+BqWhXizTaHJj8mmzB6ClqW+R9ywJ+\nokpVCp/gwBDYLiwWU9G+XFsUAuI3ndhlBSv2UktRggH8trzGLNMeFct8EMEb\nxabV\r\n=o5gH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtECavKN51JnEjwiYg9tPAa0GjVRKDZOz8xJBjkFCBzgIgZPNg1UI6h6iH/7xzxXbBby0dLyJ1eBT+hOESTHNP+gQ="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616255628.0_1616256649981_0.3694628145048726"},"_hasShrinkwrap":false},"1.0.2-alpha.1616261894.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616261894.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616261894.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616261894.0","@energyweb/exchange-irec":"1.0.2-alpha.1616261894.0","@energyweb/issuer-api":"0.1.4-alpha.1616261894.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616261894.0","@energyweb/migrations-irec":"1.0.2-alpha.1616261894.0","@energyweb/origin-backend":"10.0.1-alpha.1616261894.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616261894.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616261894.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616261894.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616261894.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616261894.0","@energyweb/utils-general":"11.0.2-alpha.1616261894.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.7.16","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"30d45b603efe49f36a011345bb518e5ac3eb27aa","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616261894.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-SaP6muurqH6jdCrxMs17E4Pk8dSi2OGv68Eb3BP4qhscqxdacMi6hgmqDPxScAE7troD0pc7R7nKmx0sTqjiIQ==","shasum":"9e19214d0b267e10723f164e2180a7b518b09df2","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616261894.0.tgz","fileCount":87,"unpackedSize":1577760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVja4CRA9TVsSAnZWagAARQAP/2/k/+2ve96uaH86az4S\npRPl8GusS/h07leVbTjo/u8ChVhrl04BK7Cz3ijDy5PJbuBR2q9oGp31+8HQ\nxvFi9P7PlpRrm6AzhKwkzGlFvPf9raj8689EH9yY9QOg2ZHOaYWVRkB5v1ZX\noKaYm5Zc2SWloVaGcWKjgc9j8jy1o5rkH4KPyeeWeQMLz7N3pUKZuTL7An0t\nCZaLFRPXfgao2MZAwojXMvwIAwwkzRmZC7/aUuKRtZxUgfJVD3RbYtukf4In\nK/y/6ecETem1biXY0J2DC+q6eAcYoLGzYsDAOXhoSdesUaYpqjbjsDHnAbF7\nuWgsfa/w+vwbAZ1dx7HMdKkMUFvV62mxY39cPMUzj0sa00tOTD9MATCM7ucH\nnGfZDQmvkjn7J33M1mDt7vtMw9v+NhNbhNBfPlJsH79oa4XO5XRQR28rN41S\nurNGEcWsi6gvGHFUvJCAKJ55QIvxbE66yvNVKQmgpnx1nuPvFO+MjynFk7M7\nDSLumNkH2ke8z4d/nbmIdBn8CYA19aXcaHTckrlhdBP79d9kDm6ElRaheDpb\n+I6rX1XddWr3QkwVgVSb3acjO9QWSb2CuYT4HBw8LrXf9Rj6CfD3ESWFZVXb\nC9W2D/p2/Bx4JhuDkzVC+48pPE3GY2zZfWwcZnuopwkOQ2MVsrmErgRPR12J\nXTMf\r\n=ESJq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFX/T/d3bvKGFjcRRYcPuQMA4ahTptsWpfm1cv6zNBKNAiEAweyEX6xLGMOc3hNCpJfz2xdkIvfhSm/cVTe/UK8KvRs="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616261894.0_1616262839883_0.8660190538302219"},"_hasShrinkwrap":false},"1.0.2-alpha.1616270728.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616270728.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616270728.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616270728.0","@energyweb/exchange-irec":"1.0.2-alpha.1616270728.0","@energyweb/issuer-api":"0.1.4-alpha.1616270728.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616270728.0","@energyweb/migrations-irec":"1.0.2-alpha.1616270728.0","@energyweb/origin-backend":"10.0.1-alpha.1616270728.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616270728.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616270728.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616270728.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616270728.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616270728.0","@energyweb/utils-general":"11.0.2-alpha.1616270728.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"f3baec98c786542549f87b0d5f2e8c3d425ea638","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616270728.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-isiOXkUAo0pHfcvQHoFVL/mWhzHnPjxGc4kDd9jGLbzgDFg6/p75x3sIvAAvm9ziPukcXrBPuQW4dAbtb/CE+g==","shasum":"4dcb6f0a0b325c34e0be23f53f2db5ef9d516b66","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616270728.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVlmDCRA9TVsSAnZWagAAOswP/RoeY0Ye3AWikRtAOfIs\nhudLgnF0H60umEU5G+8iApc1IR74gYnFhiLwleBvoiy+uMMVUMZfLt4/oDA+\nWnCsuSotijiNzmJh0Au5+PCrez/gWRDBQzyBREkS8ZdnRMb3fpzB+VEhtzDu\nqJAvdo4DQdSawj0HKz4WO9eSTA28QDLIe0OrvcFvp66uMgma07aF/pCacJiq\nty4QZkL6GMUapHQxIak/geMA9lLC1ZOfK5JN24uzvgn6uu9I4b4B9yKMYjnk\nJTmCNOOZQv3aCoyzAVv2+2Aw2eVaJ4HGMgNmm5rwpvPC+xr/sSqh4ia/tKOt\n7qVyjYCfFI+5DFqcFzyC2i/5pdf3Y8+L2WF8+ZGGalMvMMdvPxel9aEx66vZ\nppufjzXjwAiQL1nYbvysqAX36oXZlaoqh2hG++D4XqEjyK4aUgdgxR4ZV5St\ntRabLpcbmBQ9i91u/GmBec7N5jrO5/GZLFMTWJ20giLbS1LAof02Zzzp/Oso\nHEmtSoyyaAIT221DJHXxN1Ex8mHm2osh4YRkvNqVy4E4BcTFYqto+8TtQC6q\nag2Jz7BtZTCBH5IhNihEUuZcTFR/r1790Pvx/Rxx3wcZMrgbnaBgE3lhhzJS\nX9Tu8nAx7KQbWyp/bwEFRH/qlI7twEzYfzEXN4VeF8mITsdpHTp5h1yt5NXB\nR/pf\r\n=Q7rG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICT5fmymFzvxka7SaVrK3E0dm+8/cGUJNPGT0oCnafbEAiAXpJfR0StbxkjWdnpE/a6w3tJ4ODZzs6zjfvVd5ILkhA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616270728.0_1616271746495_0.6930975752893476"},"_hasShrinkwrap":false},"1.0.2-alpha.1616275164.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616275164.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616275164.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616275164.0","@energyweb/exchange-irec":"1.0.2-alpha.1616275164.0","@energyweb/issuer-api":"0.1.4-alpha.1616275164.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616275164.0","@energyweb/migrations-irec":"1.0.2-alpha.1616275164.0","@energyweb/origin-backend":"10.0.1-alpha.1616275164.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616275164.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616275164.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616275164.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616275164.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616275164.0","@energyweb/utils-general":"11.0.2-alpha.1616275164.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"509c7bedced0ff61d082dceecfb57369b1e22216","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616275164.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-RjvyV9Fl88CQU2fiUBNgwTnZDKEYdJJGYz/7P4ysl5yVv/oWpK8tgWH1ZkdJy2xBuXJqhWrL3pB19iw2Gv4DYw==","shasum":"849fa8ee3e8162dc9d1bd73842265367fe9bf2f8","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616275164.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVmqdCRA9TVsSAnZWagAAKxgQAIVpeIgr7DKqW4o/1fMy\nVvIsUo33ts9JlPzRV8JfqlT4hS9Nl9GF+HS4In/EdnlgwILWfxj/3U/uNrzn\n5mfi4QOj5wBgkPEFyQv0DeYeZPITPQhqrEb2R5UlzCX39wsK0SWFDv3+lb3/\nTz/wXfxG7XEht4Bg2ol1B2/C9G8cKKoI9a9gTZqzE9sFwjzz/EIbVB4CN+dY\niF5yxwdlfkYqRvF0w3vvTGtYOHAhu5Bnl1vSYqbJ+VKV5zyZHQnH3/z6/GNi\nPYo4tHnIUenjeAn3VzmPHw5TM+0+p1uO/1GPmPLL7YsLBDKEYHqKVLLH3QKT\n8hIR8zBJmTweqiaTnxEjzdgnVMkKADDf62wVeTByLCWU+MeQJHxqUt8rmYII\n8Yjz0tIu1TucIPNWAK82VjjOxtZHxVeNp+/5k/hZOMIWJUHADjARktN8lHoT\n7PkODA9tKE902XsJ5acPkRh9QvpwZl1tLHWqxUse5zxq9/35NPug3gQrpd+R\ntV9weqVG73njKZD5LhJ8ipHHvxFQSqceKKYs8xTaz6d0W9AszEMTeYO4rPkx\nQ5O0lA/23XnJrIQaaHrW/ZCrCdKUjUXg1gWBPD7bCYChZaGhBbR0Dabs3YrV\nuEcPN/PAB9Mi1HT5dV6TRCbuH/6aDmfH8MDJkl70B7tby2lKKd8JAXUgM5QB\nVrpo\r\n=7zd/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkUPXE5HWmmhGkJWy6qIZa+rBG57IaR2sA7TpYA9rULAiEAkRzMH3z4+VEQNwU06JQYN2DGFBmiL8LydHoy6kwTcOw="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616275164.0_1616276125352_0.43879008738826"},"_hasShrinkwrap":false},"1.0.2-alpha.1616280044.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616280044.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616280044.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616280044.0","@energyweb/exchange-irec":"1.0.2-alpha.1616280044.0","@energyweb/issuer-api":"0.1.4-alpha.1616280044.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616280044.0","@energyweb/migrations-irec":"1.0.2-alpha.1616280044.0","@energyweb/origin-backend":"10.0.1-alpha.1616280044.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616280044.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616280044.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616280044.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616280044.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616280044.0","@energyweb/utils-general":"11.0.2-alpha.1616280044.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"d2a3089cce7eec373679e9e722060ed9bd25e8de","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616280044.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-4ny0JcsPlt4YAFQvM9ER6SknCN+lM1aVhVnR01Xtj1eV9E2ny7XS3NMX1P6fAy7Jx+regdAnBuCYgum67rdCBA==","shasum":"b4a6e758b49f027fcdb32cabb09854e6e204669f","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616280044.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVn4bCRA9TVsSAnZWagAA0QUP/080VZHJpg6EQbVD6ORf\nhowMyRmcJdw7Ga8/Z9fbRmdZtfYDduRuTHIIVTV0urauKIMkzdKvdQ7RYWGu\nvZp0mqdLnXcFQyiefHua4vot9thdMX0i0rrLt6CrIWQWJjONPonAMoEJQk5C\nXPegKOqduEh+sd31sfNirvhWdL0UILhmrp/wkotd8XZ1Piv2l6nuFOe4FmuU\nq1z0ok6gMP2Ooza9uIHOYM4YEN84VUFi1S+eKhsmAKatRYuD1OT/FDcTRSEw\nm4EfxyD5ZOSM/s60tV0l0QYY+sMAoy3v51dmQBBxr4EanESEmz+i06XqpnfH\nW73NVTWmp1Lwn3848aufL35JxCi/IrdY1rhWr/6ZOYCAlMx13+J/d0RobfUc\nDePKiHJUdOOUweQBpF21IF1ju6ZCsGO8ddqnk6dffGJMWqysRwQ4UoWqk8YE\ng0OWtxNDR/wFZ9byA4Wiervlm1aI/3+/9dxuoE1XfJ769eKB/IjCOFDSPfys\nkrpTi5uEzl5Aph5FvDoo3qesy577odVzDwPrU8+mtLha3JzCWNSrWUHBuID3\nuEkwXaYmRpKFlseI14xcBcLK273c2PfvoDwhbOOSz0yUzyT1moly1KaLxoB1\nw0E8kKTsUBOLv+9q4gcXFe10BUQ8GQi7+QtwNk2d267OoTOiPamVJF2H3SCS\ntlzc\r\n=be9/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBWJxlTQROhA+yYRwehkYZfoyVsNfiGTMETKg49qAIR/AiBvOEcLIMMptiTn2ZTVuUdp7P45F35aCuotuCjVj9Uyhg=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616280044.0_1616281115203_0.08432428179894225"},"_hasShrinkwrap":false},"1.0.2-alpha.1616284362.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616284362.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616284362.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616284362.0","@energyweb/exchange-irec":"1.0.2-alpha.1616284362.0","@energyweb/issuer-api":"0.1.4-alpha.1616284362.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616284362.0","@energyweb/migrations-irec":"1.0.2-alpha.1616284362.0","@energyweb/origin-backend":"10.0.1-alpha.1616284362.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616284362.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616284362.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616284362.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616284362.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616284362.0","@energyweb/utils-general":"11.0.2-alpha.1616284362.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"8ba146e952b7be88bcf557420213918ec9a38af9","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616284362.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-AD9lrOKP5D/xiSzC+sxFp/lJu2aO1Pc0fa9HF0WoB5B7qTbUDcd9AYa3DIZRbGqng0R9KiVs5a99kOZkpnDVVw==","shasum":"6a08667ddf78110d0ffbddaee2810782de9e5464","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616284362.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVo6ZCRA9TVsSAnZWagAAJDUP/3WhW5UZAHN+CIg0XkPS\n2p43a9kLhXGnlJmR8zg6i+gg5lZW73z7KZyaRaS9i5sY9jhb1XGv+3/8LMnY\nttEEZ3vH2m318PwBj8dAAfkk3dDIy/dLAMSBqxIChOFGRJiYJTk/iAw/PxMa\nTkCNJDZSp/D5t7cTZKhZTMd1z1PI1T+rrYiIjuGXtog6dQG4ypHlMzqEwnn1\nbk81JEtCEzB5iq2kyY17SOppuERV5WtvhZTkIyO8hs+kq6SKs/kHcQwEPlRi\nU9g/qYp471nL5Lisvqp4x43c9i/73BVGHwrduwhXNUb26UE5JlkaQxR2HjrY\nR7TQzSvZCTjXJ6VGsct2R9vyPchFv1Ww0giCCuN0BaVZiI85BW0Ty5TnTvCO\nwxNjC6/WLIeMzO97B8Y1uBpZbULe9x1gSHX2zdradCrROVLiezL1kYcCv3jY\n9F9Qh/214ZEfPXZYA+QUAfT8MJmZvjobxE29bbbuy6b4YyqV6DtWe3oYG26g\n84x0H4NqvOe4KKF6+390GEbvWxYkRyh+6LcKfwR+aKjQcvTEZmpqMj188ZU9\npk4iL6YTRbIr3iARD8+/Dl1raDx+ZbAaZcmmMrsUmyy1mpmJkVP97Qa9C6g/\nlj73GTycxNFwJEek5iLibffZYjzA6w41G4aDzld5Hx+IZ2DORIgXvSVXDL6b\nnPyO\r\n=M07p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHio4+6rtKgEGnVrS6PhCxoBiprstfblGScl+xBKoT5AIgGtA8faadmMyi7LGPZyLnbiVqPM7GtVnDOTanvcvKcMM="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616284362.0_1616285336688_0.21670828085315286"},"_hasShrinkwrap":false},"1.0.2-alpha.1616289290.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616289290.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616289290.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616289290.0","@energyweb/exchange-irec":"1.0.2-alpha.1616289290.0","@energyweb/issuer-api":"0.1.4-alpha.1616289290.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616289290.0","@energyweb/migrations-irec":"1.0.2-alpha.1616289290.0","@energyweb/origin-backend":"10.0.1-alpha.1616289290.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616289290.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616289290.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616289290.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616289290.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616289290.0","@energyweb/utils-general":"11.0.2-alpha.1616289290.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6253b6cdc62ef0a89ad71c66db467f1c807ae5c7","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616289290.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-e8EXZneGDOWqOmSbFP7DI2QZzCtw7k6Cppr/+jgk4f9poJpqnHsaF/AqzNiJ1pZYUyTyey6xUsgT7NAqkfER9Q==","shasum":"506a98e41fe68f851ddf7f032c56752be57bed98","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616289290.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVqGCCRA9TVsSAnZWagAASg0P/0LK0CUOE8ezRoUJ53Me\n6sO2+8xNafvYaGydm+toaZk90RFk8JlcbChXD7gwwLeJQHz44z1D37eWqY9y\nreX8SkOIbnB7sb1khLCQ8LZpo9PmJkgSEFTu4Zlb3XyIRAcczfBEiQ2BUuU9\nLsi0yitJGhgX0wQuq9WLbcIuIFvkduaYXkDVi1P6UnGcDg+jYN1ubqqVJJaG\nmcAWPpw7KPVGiMqctYqgobeH7kcUP4Tq5NK1xBm+nq0ySYovDmL7eDB5wXUc\njSzRA9aLOtiURaUhDUhFGDfqa0dIFRqkwcN6jDOCxpXy8I4vgv/yoQn87ax2\nNEpaCeVcBWk0g6mfu6yafgRcZboIXElrF937KieZXsSa09TwUP41ffXKF+Tk\nRRCgmKACtZm5wtTtS1pEcgYbd9bu+OeBtnlBN8AoZpWvIkUWSqYZ3nW1t3Rx\nMXQjw/bUz4yfZ3iOy9k115vfUuHj0npjr5FtmK06CAVcd+jSCCQnLuJuxToH\n8/7WiP3ayEBIFXE8oRz0FYVPVoMlitzZ94wmyeA3XrmQNct7htCt5nEBG6aa\nmCtoWtiOtdpKVTRDRg2yEiX7UkGxNZ9qSO2KmlW6moXlR/jKb0Ow6Oxz8GCV\n8XUNc3e02slKb+Jrm9gxW76KmMAPOUN7NcG2JCko/zzuYzQ+QkWCMlg5kBfV\njXS3\r\n=sP2q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAITTFp7qrzGhEhspjy97iGW2Gs+8lSOin4kDmA+GTUAIgJ5ekWlAHOL7TRDmEz2/7ETutttyRS5qELx0mNhYqv5s="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616289290.0_1616290177457_0.054335052640950954"},"_hasShrinkwrap":false},"1.0.2-alpha.1616398974.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616398974.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616398974.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616398974.0","@energyweb/exchange-irec":"1.0.2-alpha.1616398974.0","@energyweb/issuer-api":"0.1.4-alpha.1616398974.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616398974.0","@energyweb/migrations-irec":"1.0.2-alpha.1616398974.0","@energyweb/origin-backend":"10.0.1-alpha.1616398974.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616398974.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616398974.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616398974.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616398974.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616398974.0","@energyweb/utils-general":"11.0.2-alpha.1616398974.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"07f73ec60ca38851c3661408aa36160d0475b406","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616398974.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-WkJE5od+fl6gNPCS0IjIj2tiukWPNEOncMtQcMEdmGtZ+kUOga6hjSURGufK23a6tOl9fbO4ow28Q659H2V/AQ==","shasum":"44dec293f86e646645e8087e98d54f2733a02cdf","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616398974.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWE6MCRA9TVsSAnZWagAAwHIP/3s+83mjgJF5NORwWm3b\nH375y+X0hV2ueOARutouhDBSUr82urW2bXZ1y+uOIB4cHapXAB628B/h1lLI\nXmtGrR5fYwHJb1V/LIjXPJnxHIldLtjPaJuLY/EONUz9XGOD7XU8hGfdSRvm\nJqsfZhhB1k5ASjX2zewqBNRXmgUJDVM8Dh3x6g83g1gMTNDuypp1ZABlFFXe\nKsID1QMS0P8EQ/Y7dV0wFAW0M+JrZ/JdqX2B/k6FquN/rzV5rXIx10YqD5To\n213FitULB9vRL4Zn8NufpXKsP+ooiXqIX4MEJYlUrkxrnyVjCi/FfXh9Rhso\ntxZ4B6eZGeh0kf0kXZaZhLCEeUrnhfy/P9I9j8X5PHS/TwdanMdxd1Pih9ah\nltHEQMc+EDNoHCMAJ7/SNEeNJMzWuBNUBA+9lJQEprOsdbV7MVeo6z0CSeIZ\n8x67mYX9JRa78r8euBI17QFkgi1tVH6fRNP+CM9v9CU0QclNNdCWG1a6ujuQ\nST0EGxj1Uy2Dfvzygl1hPsbyfIuwMZJheVQJutVZEWTHvqalLYoIRpJkfyt1\n4Hz73SOZS74fWbFZ9/hNCECwHQdI2hjaYOr32MGoGcfDfntwsZH1JMFon58m\n7tFCXR3MIFqrm/5mJGr0BENXphXQ6wpABZmoS6y9uYNteic4XpfViKZdpi5x\npPv4\r\n=dU8T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWJO0TaQg+oapDLgsYjaycQQ+tEB+MIUKkz8wfr9iQ6AIhAMDOsbGRP0IIrzgDZVcMPLDCGQ3eOrEdWoR6YyEsOzn9"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616398974.0_1616400011556_0.994725422026236"},"_hasShrinkwrap":false},"1.0.2-alpha.1616494791.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.0.2-alpha.1616494791.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.8.1-alpha.1616494791.0","@energyweb/exchange-io-erc1888":"1.1.1-alpha.1616494791.0","@energyweb/exchange-irec":"1.0.2-alpha.1616494791.0","@energyweb/issuer-api":"0.1.4-alpha.1616494791.0","@energyweb/issuer-irec-api-wrapper":"0.2.1-alpha.1616494791.0","@energyweb/migrations-irec":"1.0.2-alpha.1616494791.0","@energyweb/origin-backend":"10.0.1-alpha.1616494791.0","@energyweb/origin-backend-core":"8.0.1-alpha.1616494791.0","@energyweb/origin-backend-utils":"1.5.1-alpha.1616494791.0","@energyweb/origin-device-registry-api":"0.0.3-alpha.1616494791.0","@energyweb/origin-device-registry-irec-local-api":"0.1.1-alpha.1616494791.0","@energyweb/origin-organization-irec-api":"1.3.1-alpha.1616494791.0","@energyweb/utils-general":"11.0.2-alpha.1616494791.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"c10f359342dd3700df6ebed05114b079cb08d806","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.0.2-alpha.1616494791.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-TufOufCsFmyvrNs85mu8EcnSP5z9CnhkN0PEgCmtEkroezYTXFRuUpKnuX8bSULOX+Ai0ZADqJw8Z4tcDjjIoA==","shasum":"b3c54c61aeed03071dd041d8edc70fec6cfbbb91","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.0.2-alpha.1616494791.0.tgz","fileCount":87,"unpackedSize":1578173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWcRJCRA9TVsSAnZWagAAoCgP+gJvCluEwh+O2x4Z63Yb\nR02WZs7ZVJdX9FaOUJWz9giPyRHb5LKgvzij/orDDPNayGblr9j7O5kS5jcK\nxHA859FT4D/T4+XUniHPI8pPAv+Pl9XA/AqwXhdXZK4EZZEwOtfL0X5pYX08\nIHF46xJP3p1qkTtlGcpO+H3aXQLLFu6jWi8EKinUq7hh2n7WUhuxzXBUHt7B\nwWGFx9Dulobk6pngT1+hSzKDTzkFGNJDByNf3CQNJh4c+s+ilKQgjUaDrsRf\nCXf2JqsVCgemt4cDhgR6AXxfNJnv2bscX9iIPxwjC1crNl1NcaSfSBwPHSGr\nMvjKuz74bqmS4w2WVP6RlgnjylA3imabQrDW0rxqPql1m4s0CnbHM7EMgFog\ntYOwWo5lMcPNCcY8zSA+LGmVz73YerTvoHOqE8fuxQz6Wbz4+U6TASmQDdu4\nYJ+7O6aNH0vyBEluTglxHkCpQCYzaXk0AkeNtiztltvHgyXymgigIuxHE6vW\nQ36QmJ0OeBjKpVZ6R56kvGIHdZUSp9mWA8fmn4nFomUsmhTnc7HigbnjfMlj\nHxDqOGtqww3dBj9/j08nOgCsz0ztVIJJkvnC+nOZkHuvOKPef5vA1FbWFcEd\nEeGEhWP6KpUk1qiPBFBhmpSrRbVCLqxa0zxJj56F5R5AuXrqPgp1TwyGo3E5\n7Smv\r\n=guKX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDQfViRrx7ryuhBSV6GEpssbhJIXf2SUhOSsNyZZZ3fwIhAMyDWw2WgNtY/cvxtoSdOHch5ZLhGXXYvldhjy2OYOCm"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.0.2-alpha.1616494791.0_1616495689471_0.014347099962947807"},"_hasShrinkwrap":false},"1.1.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.0","@energyweb/exchange-io-erc1888":"1.1.1","@energyweb/exchange-irec":"1.0.2","@energyweb/issuer-api":"0.2.0","@energyweb/issuer-irec-api-wrapper":"0.3.0","@energyweb/migrations-irec":"1.1.0","@energyweb/origin-backend":"10.0.1","@energyweb/origin-backend-core":"8.0.1","@energyweb/origin-backend-utils":"1.5.1","@energyweb/origin-device-registry-api":"0.1.0","@energyweb/origin-device-registry-irec-local-api":"0.2.0","@energyweb/origin-organization-irec-api":"1.4.0","@energyweb/utils-general":"11.0.2","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"979824272555bac3a180571b7fd8b7d562596a68","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.1.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-0mhy+jF7TTHOGUSZbNirXyG1zn023F3F8bnJ+EyXr7hm/bLU67cqr4HHUSs7xEkWb5GlqDVgRPRGfPzce/wrxg==","shasum":"ce21549615a6b8f8e2c5302e88a01a57f23b6528","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.0.tgz","fileCount":87,"unpackedSize":1580928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWeq5CRA9TVsSAnZWagAAEMEP/1pY64v1RgnQdl5MZFmh\n0iTp+vMKhNkeYGvj3qfwF2VVLqQtnInFpqCREfQ6o8LgSGcxB+CZBSGiegbR\ntbbyPwdIBHZZBpGZT7E9cjYQXuRha3GNl/7J7jMaTzuzS5whT2CVIBRTj/7y\n+QbGLPbHw2sx7pZ/mg1P5DrRV2MhoJTriHFLWEYsNi+B7UmnfzvtiMG98Kb+\nQo+Kuby4MRio9HkLluxomgxhGqo9/ZZhLUTFAXfMWt8Tl/KHLjuMHMaYDuMF\nb4hjaQ3HGBV5mAPpXcoNpHpWaErbytO5NTDI41v5PgjjtfTkC8BpQOkjexGB\ndtsmVTOKf++ajJ+WJCct2CpadTnjT+LQgURhbCm04eFuCSuew3Y//sslZ8KZ\nd0Mf4JqJsL7otge7QXOfkqxVFU6VDMDxiSyf3NjIxkOfvI18AK61YIp3zTNJ\n+Mm1DosKrel3mKvPnG7hDSh4wed6iCe7OJa075TqC/IBEJqs/OAiwfhWFPeX\nEvmPJNgSfV+5d0JhILftrGL3MWK9XKvNtPCSWcoqvVlb1XKvXhgZK9xUTZ8a\nclI35wVgvaOsvl7PkevOHo0pgzWn7AoS8hD7KewC+TJNfqWvYK9GQk7iMPPg\nQNU58FkGQZ8+Ldbf9UyEZFcd4ZHVGHadwJOzQKt+i5SnLhpJ/nE7gVfmu89I\nDsjZ\r\n=I85J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi6Qu8llTdKOWWYvx9OL6BbXiG/p3prDRB4ZUvBtF/xQIhANyd4Tx0hhVXetvFrnpMdCPTtfgFMYdnrRarpF+64gtP"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.0_1616505528551_0.9245091387249516"},"_hasShrinkwrap":false},"1.1.1-alpha.1616506929.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616506929.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616506929.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616506929.0","@energyweb/exchange-irec":"1.0.3-alpha.1616506929.0","@energyweb/issuer-api":"0.2.1-alpha.1616506929.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616506929.0","@energyweb/migrations-irec":"1.1.1-alpha.1616506929.0","@energyweb/origin-backend":"10.0.2-alpha.1616506929.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616506929.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616506929.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616506929.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616506929.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616506929.0","@energyweb/utils-general":"11.0.3-alpha.1616506929.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"6a1e2b7f538d028df437a60341f2f94f7c23226b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616506929.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-31MgBiMp/DBrG+oHSPIEHf4F14dvV9BAwNxK+ry4ZQLXYbMSDhz+uq2C3j1xehaRLGmLVoyUpBVvEE7gH+gtYA==","shasum":"8d5475c995be58160339469f07953c99434611d4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616506929.0.tgz","fileCount":87,"unpackedSize":1581194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWfRsCRA9TVsSAnZWagAAES0P/1CpHiRqhFcDKLeaKPa7\nsthXwXrfJ5TCaHAOCpLouEhtBAoc4QYd8LFGT1TYF/OxxF5tuKvoZ7u1kEWM\nx15oQa21Aw0odGWsid389lBqai2Fp3ax3LXw9Z316xlWk9Wh3qBEKNfQhy15\nSbp9GUB7gXkyrB5JSQ6LImShNhPj1kcoh2KN7+FAI/sMdC4s3abmtA4cJgZ8\n/IuYMckoSjz6+fdo4xxRuv0g7DIOEdFqklc46H2YasoxcN8AUbPBXM0VGtuB\noCR49PtOlvCXWohIoQ6a2PPodvT5++Buui0jL1+tm7FodMvHzYThqU0yQ+Cw\neZrg1B2JyLqqTPWx2VVze7xYi96Xb98SWu0Tj0hExqGGBQZyDpeccCyJ+loW\npks+f6aXYnwzavmh99bYGRu18nT31qlrWWGodzlTrh2pLVa9lx3YNKYokmIn\nbm5UDlFg9KCEduf9mvUYpmRp1ltzJMtMzfeqmBF63dXMj9nHa16eEJlk1PEa\n6J9uDk6knjVn+Tm2ncV6rE5+sBLfvxhMESVsXdHm1OhohxX/46wDVH9QNmpU\nGvFXX11G8SqO9B0YFWbFpKi4IgmwFqsMpYZltDUM0gvDnN57tjy+XZZbqkrI\nH+6eLI5g5OgCpDTWCC6ZioRZ8ZVQaFiAAPMRzNa0YJd1hn6a/UZoax44mu+S\nsT1V\r\n=P30Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC29N/ufcdrBXnMj1m+q100Is29wYKlHXZy97WONu7W0AiEA7Z+jEu4bmd+fw7Vcd3vBfzMWMRrsZHL2gfPX70qKU+c="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616506929.0_1616508012240_0.6716199967404433"},"_hasShrinkwrap":false},"1.1.1-alpha.1616510944.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616510944.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616510944.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616510944.0","@energyweb/exchange-irec":"1.0.3-alpha.1616510944.0","@energyweb/issuer-api":"0.2.1-alpha.1616510944.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616510944.0","@energyweb/migrations-irec":"1.1.1-alpha.1616510944.0","@energyweb/origin-backend":"10.0.2-alpha.1616510944.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616510944.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616510944.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616510944.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616510944.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616510944.0","@energyweb/utils-general":"11.0.3-alpha.1616510944.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"1cf3e6dc9b6dcdffd867dedd105e099273904ff2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616510944.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-WgKpHw6/0pTtJNauNEPXY7o8fqnmyHBmhkqeUx+xvs2aHBye8uasGoeM/eFfHdMZPmS+/HRiMX1bRZqDANsjmA==","shasum":"b74e325e174b594ccf8ea7efb30216b418ec189a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616510944.0.tgz","fileCount":87,"unpackedSize":1581194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWgQeCRA9TVsSAnZWagAAuP0P/AtpmIe3sQz2yHgXCpym\n1lSRc+3v32c9aoEBg6TOoezwYD6+0RHWXW9/uMjOgCiQDx7dVTkYWPOwGZnQ\nvK8+EYOYN45qs17efLre+x8lIMnzNZ/pODJLl6aCc8RcMiyoChdSMOuiicd6\nG8noBKuSUH4w4GFjm7ThfJJD8M8TSuyPEM4rT92Q7x0Nao1rngQ1aM6OGzvo\nf1N1yTIO+/MkBHaM0HSmc9TVdgW9udGgtBxKZTxHf2mCLU3qx/x/0o6u3jiR\nuUh0kWceNtcBsbkfBuHAYjMpNfcc6HIev32uYohfpat8H7m35owg4o7K66O3\nxyVC4W8U70pTXRvPnKTdxt6jBzAXC6RTFDjheiCg26DO46aX1Gbtgls0yAiM\nYLgKX3suqjqvVCTQuJrRQZy6e/kyZD35rkqUmwO/4AlaIz8Azg9yYYfwmz1x\nzZB3wmrDDZQrwAZlfBAwu48PcA+FPVDcFVOpK6VNEFR5aQJIOD8oLYDgydQI\n0jwhPOdBhgt0xuvt+uyEvFovdTUZUY2bZN6B+UBHKP96+WGUaynlAAwWOBRQ\npz/f/mUAGUuT52jct9+OP28ruXkyEKV5UNJYrazgCQEB3aFQf7Up3QgQdVBi\nE4lqcH1UztujZMs53s7L8eV44Hp5cYb1vQA/fpXpWNWJ2oEJumRg3Hwzx7zo\nYay9\r\n=AVpw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBYGMGDMtM3pEcvac/8Uvb2lYvcEcxFe/eLxdUWkL9+8AiAVzduuB2iRar5DBOm6rwhvpVUiQXvBF0JUMM/BBkqLuQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616510944.0_1616512030526_0.3614943464561471"},"_hasShrinkwrap":false},"1.1.1-alpha.1616512712.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616512712.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616512712.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616512712.0","@energyweb/exchange-irec":"1.0.3-alpha.1616512712.0","@energyweb/issuer-api":"0.2.1-alpha.1616512712.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616512712.0","@energyweb/migrations-irec":"1.1.1-alpha.1616512712.0","@energyweb/origin-backend":"10.0.2-alpha.1616512712.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616512712.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616512712.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616512712.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616512712.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616512712.0","@energyweb/utils-general":"11.0.3-alpha.1616512712.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"44235e9c0b41b61cbd76a8b213e09193573161ff","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616512712.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-eCIw7WRsPbbvly3bLCirWKZrqZvwRiJv91xLqFp5slIMX48tRiLwm6gwN2b7D3brR/OlTPc45p4DFJbB1c7pNA==","shasum":"f8785d8faeb3cb46ada03e4618f43c356621a92e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616512712.0.tgz","fileCount":87,"unpackedSize":1581194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWgsaCRA9TVsSAnZWagAAW2YQAJDr9DthlUdobeiNDTgo\nKr4Z0+BGaSz6A5lvyB3MNg1+EdG/luaH12hjSZK9HuufcAyGEs9U+FhKrT/G\nvxramktO1kR9T0GZrCP0S2eG7R5E8+7xNEpqaU0novfWFBCFFOZkWsUJ9upM\nWRDX+xIuRNEyPcQhLO9h46628LtRsasxLQfjXnfxThP+JYmIeP1iPn52mTk8\ndCf0GH1HfrehXoFTL01zaKDgoaZB7Rl+Us+Q7kOtVLfEpOP/SXWDA74FIqmP\n6Z6fmeXLU8ikzGK8QB1v2hIgaqNtQB9g09Rluo3TiWJPKPf+g5kHxXui6Vbg\nGZgu85L+lnxIUS5EOBClN7nKZ/+OgapYFrXtl1o2DrriuVmEvD4vBAyXWotq\nppItjsG5Y2VThtOSEbNw33aDJDDO2yMoBhxuzphbqdQZY6scDJ583jwjHOTE\ni+IJBfnCfbBpCgLJMp0aQZOJKZCQnHaMaZXvLQ3FhBSQfSxqegDFPN/dLhJj\n2eFVSqbrZ5qdJPBHs7cCxgq1XRYahbI1wBQYSC9KTCPGANpnuxgkspc+5i5g\ningYltM4JAIAqA4RnxAALuoGYs6x0cv/cQ3o4pH1aeJsg4ETUFd9aY9HTWxv\nkZeqrswjyKspKgJirbh5p4otPqcU2DCCLohUeEMHiCB6l1QFSy9EB3di6EBg\nBuUW\r\n=BPft\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEojX9WIUa/uQaITQUv66L4rTtX4T/tbtrZy22C0AEByAiAWX6tF9p7qwR6GByN3VPYumzweV9gWWm/GOeWPwuDC8A=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616512712.0_1616513817946_0.05576939924455293"},"_hasShrinkwrap":false},"1.1.1-alpha.1616569951.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616569951.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616569951.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616569951.0","@energyweb/exchange-irec":"1.0.3-alpha.1616569951.0","@energyweb/issuer-api":"0.2.1-alpha.1616569951.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616569951.0","@energyweb/migrations-irec":"1.1.1-alpha.1616569951.0","@energyweb/origin-backend":"10.0.2-alpha.1616569951.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616569951.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616569951.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616569951.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616569951.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616569951.0","@energyweb/utils-general":"11.0.3-alpha.1616569951.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"ca1178c9829f3dcbf7ff59720d7013f15777d9bd","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616569951.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-9A/dHv/SbNEl8yZ/A2Z4Gy2CXV+hmQ/QRQolVXPFw3HZTdt5AIod9hTNw+0vBQDsF5GXqUf8wWihFdrgHswmKw==","shasum":"c5088f1483ef64c73cf4c8446a0cbe5803aca4ca","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616569951.0.tgz","fileCount":87,"unpackedSize":1581194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWupfCRA9TVsSAnZWagAA7YUQAIGm+DV/KzYlAC1SVWj4\nyP0eoV/X9lSX5bXDsWfc/scgkbRuU5MImQnjEkL2FwzanvzBrBthAWn58ePg\noVYeYxf+gelEynxWycWWGhIL/kaiKfUEb2il0n0/FA5t5as5OPXfvpqD7VqN\nobu1W2D2txVyCgA8Ss41F5AsIZiJxuYf3NFqTtWi4nsWB/7IvyXqt8UfU1Jb\nj2t/gxUvGALsinMoo7PDqxuH1/7LrwE3TO8Jzoub8S+/D8u6ZsGOCmETyhdF\n7CNRiTb/tAoeWLLOuDEoyW8TkBaOQbZ58nX0y5xvS4zSj/k0JPpUOW9K6N/y\ninleCMITUtVbbKShDylNw+FpJX8xnjDiP1nr2YFCUbdNvORQaqS+w6AGNxVs\njrMKVIJA2odYqdK7m3W+djErMXFBIQLCpC+1l4cX+m0uzZAFH738KWjj83CH\nKvDbVcspLdGYUAX60F6ryHPNv/8hz4pvXPR/3pBoNPCoS++/x/yU/krMP2At\nFoU/90BR1vr2IZZKtoKcDlEimtqCapZWTWSCowEQPlx1BHgQD2IckgOV5hR+\nyVPmS0B6tJmO4qTsOZu6m3v3X4Z+pRpygvzJzGJ9XtPpPPDXVfO/utwQk7iX\npawURH5Qs9juQk+DgI9r0QBEtV2DT+r6T6vmVLXdMNXztIlrTxZUXioL0q5D\nP8XD\r\n=Tu4x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwPp8hEE9fUHKwJi2c2sxPflbfsf3p0QDbwwtbfjYDvAiEA67lNPcuaMz9bXWU/oTiVO4Dc8ydpk6Y5YCzY9u46lIs="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616569951.0_1616570975125_0.3761315466765198"},"_hasShrinkwrap":false},"1.1.1-alpha.1616571401.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616571401.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616571401.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616571401.0","@energyweb/exchange-irec":"1.0.3-alpha.1616571401.0","@energyweb/issuer-api":"0.2.1-alpha.1616571401.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616571401.0","@energyweb/migrations-irec":"1.1.1-alpha.1616571401.0","@energyweb/origin-backend":"10.0.2-alpha.1616571401.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616571401.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616571401.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616571401.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616571401.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616571401.0","@energyweb/utils-general":"11.0.3-alpha.1616571401.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"2743f71ac93feacf8335ba0318f8727f16c21990","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616571401.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-TR/Jt13kOu1zBijHNHvXV1oPq6R53U9pjwxf3P88vLlY2V8wh8DBgiTwY2NN3T8MQl+k0YVKBNrsbFYDl9ilRA==","shasum":"f5e34d5a8e0cbca11ebef644663abb4c9444ef47","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616571401.0.tgz","fileCount":87,"unpackedSize":1621417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWu+1CRA9TVsSAnZWagAAbDUQAJQrcTsbE/MpwIZ2srWy\nVU8Cd0wB1lqcx4v1s3yt+XhD+qSM9+wvFNU4T4/cMqSFGntM+R74o2RFoao6\nt9O67fHId/YIGJ/UbASjHQvQhQB9tayHPYJuErxHsImep4PNlu2d89bCKahY\nYED/2tX2tYabss5kpvsmhw4jOH+2BSVZFjkTzDhAQr+6d8Z1G1o15O1DTo8c\nIM4euukAmG9xsY0CK8FV+et+xiKYAY1Lps0SLdKjCDk6e1T9e8MjLlk2M0yc\nUEE5sezvv+s8XgScFVpglr96BU6h+CxqKaWVE3muLj5otoPKOioDbQ0eQUgn\nNhYyzmR9DOL/lThHl0hVRnVjrN9S+9CHQl0hdnduK/Jtc8GPKDzF1k+RTeUg\nYG07Dz4uT3e1g4hROVXA0LU4eySVVyMWNqNGv/xrMQ0w9Z+6tPp68Cg03idq\noxdo+niIvLkCJ3i0jovzpYU/A8gIUmWOBbTnjoxk/IVCZndK9N3+5rYluT/p\nueoIMsN99t2iHZzr9Q/Vb2hxrCo4Ob5efhfPKPTyJm3zePPmMNc8gnXlljAl\nXQpqyOzyBV5N/4WX1IxWTQGYqB5eg9dmTvR1DbcnYVSklt0JFU4Zkkx+JSwq\n2zGNcTs6DWVd2/TrtsuMAi8JsCP4YVjfYYlLBOc4WEdb195dSWDaP8Mbwuhe\nS7Mq\r\n=QFmn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCl88Cu3cf7sivHg/vVNfLHzhEkK4KwP3BCOIHKVZnsBQIgYp9hmxloIz3mbkwz8Gyv82UA9gOJtEGpGPIRF3zna0k="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616571401.0_1616572341598_0.06249864632492086"},"_hasShrinkwrap":false},"1.1.1-alpha.1616575982.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616575982.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616575982.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616575982.0","@energyweb/exchange-irec":"1.0.3-alpha.1616575982.0","@energyweb/issuer-api":"0.2.1-alpha.1616575982.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616575982.0","@energyweb/migrations-irec":"1.1.1-alpha.1616575982.0","@energyweb/origin-backend":"10.0.2-alpha.1616575982.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616575982.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616575982.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616575982.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616575982.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616575982.0","@energyweb/utils-general":"11.0.3-alpha.1616575982.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"1ec4bda2528bb4498a38310263ff9815a251d07f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616575982.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-T0Z68Eymw5muNf1i13qCUc+J7j2eSlggFjNsvO3PI1XD75V20BvjuOm9jJNy3sITLB4Mz01aubSmo6DxWtxF+w==","shasum":"c91b934f4a8f894b0a74133a50858e42171e1239","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616575982.0.tgz","fileCount":87,"unpackedSize":1621417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWwIqCRA9TVsSAnZWagAAGUMP/jmm5t76jITuHfm50WQz\nQuupQrysScruAlfw3dTIgZAQ+2pCpASbGJ3sd1Ozox8o3jcwcxaot81SlA4m\nOMKeXCuApB187jxQnF8bUJ7qxTlBrj9UGxDZDfqfVywfiC3/C/337Pdh9wkj\nplX6fXx/Bd6ud2DCVw/zPwxnbeNXY1cQC+cpiKq5Tx05z7SvTKU2mxcVZIfe\n5EY7rvepm7TocBeSE2LCcMeb0bnElq7iEP46UyZFH5dkTVHB4E7NH8CyXlzK\neAz6zN9INqpw1pQ+Z1vT7en1tcO9sM5+GxiUM148inmsf4kqhD9tCRNoGuBl\n2gkxpQ+YMqWaB+jGNFMhpv8Mhho6uGGFAMlQPZRVMjjAIklN+MtmwPwadXnB\nnXw5ZAatiiP1AYDwSSjVhWYqpN9iQm3HqzUuMovUfe6IEFlPXFKFP11Uf4Pq\nO2XJh+AiGGA2N8wnCA10fnydIMkIM2etBhbKJKnMDacZXBI5dGNoMGbJ55wd\neYKqQFfbyFPD8v0ObOPojiyGaQUjIAiHm4k16SdRJNb0M0bz6DohwEoVUJUb\n4SDOzoUB60nsk/ZHcKukKaoKn2bN1FsN5qE2qSr0+ke3/kwQyHiU8imJFjsz\ntlkFrky58CPo/6MgYKeC1IeSpnZ8sZ5QEWzGlejQk2T97LrLcJGSSG/NCWke\naLhP\r\n=Kprc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF7vEc0Fq8wlC1nZCG2ZsM1iwWa6rVVNZLkJLOI5JVBwIgQRWOAn8cA775WOeLf1RKI71g0SDHRfqTlvmJ+JKJJF8="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616575982.0_1616577066173_0.09588737874732134"},"_hasShrinkwrap":false},"1.1.1-alpha.1616591240.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616591240.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616591240.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616591240.0","@energyweb/exchange-irec":"1.0.3-alpha.1616591240.0","@energyweb/issuer-api":"0.2.1-alpha.1616591240.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616591240.0","@energyweb/migrations-irec":"1.1.1-alpha.1616591240.0","@energyweb/origin-backend":"10.0.2-alpha.1616591240.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616591240.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616591240.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616591240.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616591240.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616591240.0","@energyweb/utils-general":"11.0.3-alpha.1616591240.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"63fae4a9035e3b5dc864b20a7671efae0d941d00","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616591240.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-KgT8z8xcBTFZqVrvozLe89/DjoAs3qbPE9qTNi3XzCUPITKRl1DW1/Qxcji7Ol/7o0mlygrB+H6zjAX+qgn2gg==","shasum":"aea5e848a7674441c1bfc0b7557f13041db1b228","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616591240.0.tgz","fileCount":87,"unpackedSize":1621472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWz2bCRA9TVsSAnZWagAAv5EQAIMPw9Dl8l7rx3KH0aNY\n2L9znaN90qjdne8dUJLWRVPmBXIoHQO6aa4OU5jgjl1BvB9j9S6AQes9ML9u\n1NI3XZx8oJ12bZPmbW9LCYcZ2SJWzQm+fxRWwLQ4qf+C//89u+mSFQOvxztH\nbHgE5IDzgrjNXqjtgwfrO6SH4hB1Fnjw/lX4elpLHhmRNkROye9gbLW9LYEG\nlBXGxUhgG2ZZspj13oZdiWLJuXWP4slx5AWlu0h5aQYu8TbtEFKecjTWrYJ9\nExeeDPuijKuRKz3r5bbVuaIx0DgQexSmzfA3727o6THg+hC8M7G+ztwqqNr4\nD9QcU+7nxwMbnwQsAK/f6tWAEHb3fEqpIDyR1wnR53ETd1RigBeq/MVFYvXY\nRxpK6YqOz8+7+ZJ/PkHY6YX04qhaoxvT2HROv6yHpzXUtzloAHasKYzFiet0\nEdq5sUqh0PbLVHNfv3TN5Y0uF2maJS77PmRTIucQ5xYHDs3ACquJRR07Bzep\nZadDLxC3nO38YxBvG4FLvbf4sRGQ1SeLBbIWkxJDrqnGraDMRlpiU0NV2id8\nCYsaZZ5ootyV0IPLmFn/ugaP626exxx4AlRBQe/zM7PpbE3wuRdnOlDBjNeG\n80TdxCyiokjWh0LBxywJ9JdVHusVhwynx5d03YsT/XqI9OlohwsLSJ6y5/PH\n936f\r\n=H4/J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBD6QP2KRrseCFiPt7QsXs8O5P+8JYt1N+dGPRMR8ZDAAiAGUmiW1563diW5JJge/BKqoA/p18oy3fyEzBAtHCgIvQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616591240.0_1616592282984_0.5016316593607506"},"_hasShrinkwrap":false},"1.1.1-alpha.1616687405.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616687405.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616687405.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616687405.0","@energyweb/exchange-irec":"1.0.3-alpha.1616687405.0","@energyweb/issuer-api":"0.2.1-alpha.1616687405.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616687405.0","@energyweb/migrations-irec":"1.1.1-alpha.1616687405.0","@energyweb/origin-backend":"10.0.2-alpha.1616687405.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616687405.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616687405.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616687405.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616687405.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616687405.0","@energyweb/utils-general":"11.0.3-alpha.1616687405.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"63fae4a9035e3b5dc864b20a7671efae0d941d00","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616687405.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-AwDxYLoJxzBeXAdxreAWFPmFyNGlQbJ244QSKaDVGmCJBh20QjIrP3LqmatyiNT/YD2L2B20jzQIfpvKKRvkGw==","shasum":"f090654a8066d3fce4b1b8beceb55431d9941b10","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616687405.0.tgz","fileCount":87,"unpackedSize":1621472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXLVICRA9TVsSAnZWagAAP6oP/j2KqAlHIHUGV1dxje+d\nFqf6UZEllJVX7Epz5FtG7Xam5AlA3jGZbOeYN6Q21oQpgx2DTa+Q1d1kcyHo\n1ibL+Xnd90s3IGjm8EQyQaImxs5nuAZJY0Jf747cAKCa+HQ95trl9U1R2aFT\nQZkA8uioXo6euCRLTSkDG8LNbU0eqWXa+5M2FmdWKhnPYfhgeygXmgNPv3hJ\n8ulC7f6Rp9naQOTqLlTI02U6faQEu3nnTXNOJHKz14Kb5AtxvzD0sZO3W9uD\n1AXBprqnGVyqXWXg6bkfKTP2uVfbpMozrajJ9tlV0BKbdrc/y1KSFsntjP3S\nXcKnRx5y6gNCqiH9xzdxy3k5IxdL1nHcwK9zd//gIK9Nhpw2gONmAgLFHLS9\nQNsLsLpZZPSX12InWFG18s66PzXAsAlaaNfgm5B7ywxVJ3yF7HCD640ZnGPN\nS3hicwslR4FbSzHLQQ/QmKjYp3DStap/Gb61mwCwNrgV+8W2ersKYMFFn9ow\nZbMXjIvw7ydwh/sHmPgN9S5B3LNWG3NnhQtaD7IuYmYIbdCoLdT4Qa2srVXF\n7pus7UdJNF+ycgwJsHaqK3DjW7FmBldk1E/et2x10bPBXaSRDY+aKdEjsIBl\nv7jQahBMhS1WRrdY5nH8mhhVDNiYl698C8dWq2Bj9bgjGbDrv4V90QN070Vf\nJcne\r\n=UteI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICAmt7mIW3j9J+ppp4K1wGMC3NQmJ0rU7epbHTN/CWfJAiEA5vJLOZtcoQDbhA/ljYpNFUyW5e7WP7B+LOpvpIBRsdo="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616687405.0_1616688455907_0.8612869296471"},"_hasShrinkwrap":false},"1.1.1-alpha.1616690130.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616690130.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616690130.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616690130.0","@energyweb/exchange-irec":"1.0.3-alpha.1616690130.0","@energyweb/issuer-api":"0.2.1-alpha.1616690130.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616690130.0","@energyweb/migrations-irec":"1.1.1-alpha.1616690130.0","@energyweb/origin-backend":"10.0.2-alpha.1616690130.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616690130.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616690130.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616690130.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616690130.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616690130.0","@energyweb/utils-general":"11.0.3-alpha.1616690130.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"1dfd423fe914016c74564b99482f64481f935167","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616690130.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-6xM1URgTk9N9HHmv/DwxEy0F/N+b987jwnUQBXPJ4259V/lnLpXZ0GmMRWmNDBl8ubHILQ8/qIbBE30IaZ1ZEw==","shasum":"b038ee14e9fe999bf3b5c71cab03cdab5aabebed","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616690130.0.tgz","fileCount":87,"unpackedSize":1621523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXL+UCRA9TVsSAnZWagAA+mYP+QC2Epo1JhDgmUq/rCen\nEpukW7PM4GV7Nafagd2TEw4iubf9sUkb4CG9u0eYcI5m6Nez8ksmXMNaUM7f\nBciticceR4LbzQJKXgPiaeerQDyd6uvRmpy79I06d+PJoo/Gk+LE/H5U7vQQ\ngeLGO6+JN672QUvdtIwBmKd+iMk0IHEIUvkXU2uimDXvLiYleh8TcRwFrk1Q\nvJoVS9qomWjaUyJF5UjZs9Hx81EedILf1BioVn7AhW9gzbTYDdMtmIETIGqx\nc8CP3TwnrF9HrsrmwHonxxBmntgXqjKRWBSx4+wwWedsEn0eb7k1Bp0URnGc\n6eQLdXiC9Vpuya3bnsg6XErlFNjj4jYUnKt1qViGTJzQtiqJLIIqEaj2Ywgx\n7gj5mNq6Q9YsjH4gLrQolQUp6zcd6jxx5kE3mvaiatqwDzXMZFl/uJzPdTe9\nHr61qgdeMWUlwV8QCklnH4csouMwqxuOx8sH3MSDUnYLh62kRqRDyR+p1UOZ\nWt//CpxPR4eN5Epd5RsskVvgJGLyDkjAB7skQkysmWjAwgJKYSknw/MV0c3g\nrflJOjXfVDCOH9j4djeS2ULfZcdf3oUxAkdnkHfyMtP/FYNbPZswfYuXdN9F\n86o50+O1rHyzERZNaj/ZwIfB8UCPvuRxiXjw4kAURzZeviENfnpY9zvEPOLn\nyyG/\r\n=A2lN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGnyRkE7nXT7Esc2isBsx0K9mi8xtLHWtxtyFxB0bybqAiByjw8HiEdNgdBIl8nNna+vgP097Qv2ZdsGA9vaJ3D6sA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616690130.0_1616691091538_0.1525480722167829"},"_hasShrinkwrap":false},"1.1.1-alpha.1616746569.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616746569.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616746569.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616746569.0","@energyweb/exchange-irec":"1.0.3-alpha.1616746569.0","@energyweb/issuer-api":"0.2.1-alpha.1616746569.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616746569.0","@energyweb/migrations-irec":"1.1.1-alpha.1616746569.0","@energyweb/origin-backend":"10.0.2-alpha.1616746569.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616746569.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616746569.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616746569.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616746569.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616746569.0","@energyweb/utils-general":"11.0.3-alpha.1616746569.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"1dfd423fe914016c74564b99482f64481f935167","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616746569.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-v5RIXzGalVLyDyLOkxeeuK2cKGoYhJJSZmVjB8tpKmG8UQbQu7hbyvKeuDQwDSXXGYnuwLYqoxjmn7pw2mpJ3g==","shasum":"ec588478d28c3d88b37d44bfa28d9a75ac3e1a9e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616746569.0.tgz","fileCount":87,"unpackedSize":1621523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXZxdCRA9TVsSAnZWagAACRQP/iZxCeJlr7IzHRycenjL\nwOt9Zq8qC3CizGeuPK8K1sk9pwozPtiLJxYh3qe1TvFAuV91Ip/CQgGaM1xi\nlYelCKCD4kQ96K1l00+AA6udPzXrethUMpeQpJDZLfjhl1vfxw5iZBahGwqe\ndWG6LD6+gWkcflGT5TimDtXcfMZ02O8w+iRsDLWPS1DQamNzP901l4aA8FFW\n2sqZ3pmzmkgqN0ZN96ld0H9rBG+oFwW4iURPrOHygMcVVVtEApKnPFNn3ozv\nKAxVUkBjNQUjAzlqrfKaZvEkAEFSiVtTKO99bu+mxkD4AqYKO7Xf9ei/kj5F\nlpQPCaGoAlYw5OKUiNm8p+ELikXjelB1N4ySJ6Sr6jLf+fdKMv1kWsie4WKQ\n7hZBivjXkEqRDhDHWjVkf8TF93oR4Etj0bsseVhPBmB0onj6jSN8pfuXlJcq\nd4NQw53t8yQ9mGheUzcC9OUpF21j3Ovvv4ux04vFFHr5K6QIlNxDYCYPUh+x\nBI5d0uG7u4ANTkaUioOKRo37Ob81DzVOEt86Mn20fn8Mwt6UIEqcC/k50Pga\niLMfWSqUjva0G62ZIipvxoftxuSlYWNNxt7QnTa6kaBLWXCGe0NbTdyX6IIY\nhsXRL6NEM2ltRBgT0rlrbUkifLWnrF70EGUGS/MVm/uaLwtXPbURyrsVdzKs\nIGVX\r\n=iXSJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHvd8U+oQsezJWDXVbGEzWR0zbFfxPVwMggKI3n3WlrAiBW2rVng5xxNkjRXONvbWSGfsQJkHMCtST/YAKv9R5eKA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616746569.0_1616747613012_0.006853979983759029"},"_hasShrinkwrap":false},"1.1.1-alpha.1616755491.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1616755491.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/src/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-app":"bin/origin-backend-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1616755491.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1616755491.0","@energyweb/exchange-irec":"1.0.3-alpha.1616755491.0","@energyweb/issuer-api":"0.2.1-alpha.1616755491.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1616755491.0","@energyweb/migrations-irec":"1.1.1-alpha.1616755491.0","@energyweb/origin-backend":"10.0.2-alpha.1616755491.0","@energyweb/origin-backend-core":"8.0.2-alpha.1616755491.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1616755491.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1616755491.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1616755491.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1616755491.0","@energyweb/utils-general":"11.0.3-alpha.1616755491.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.14","@nestjs/config":"^0.6.0","@nestjs/core":"7.6.14","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.31"},"devDependencies":{"@nestjs/testing":"7.6.14","@types/cron":"1.7.2","ganache-core":"2.13.2","supertest":"6.1.3"},"gitHead":"dc500cb0b1602728fd455e10be2036b67803e864","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1616755491.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-qWj6XBhM4b8OUfbmgfWISDbFf+aCj/kInBjM5RMZO2hPtJGfxP/vARwidx6UwgKRaZwPZD4YpYRjgYHbtd0u8w==","shasum":"ae8f2e7d22e77bf86e47acb1d77cbeb4a4abccf2","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1616755491.0.tgz","fileCount":87,"unpackedSize":1621523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXb7cCRA9TVsSAnZWagAARkgP/A5HAuFMxCoK26ggmbEw\nbl6v/8Aiq8vuMfSmLNxP3KWMtaAEXjKNjdbn/XX7B6bWcG+Yll50fy5utdPb\neS/4V4fcKG6l4BnfXm9cNKOoXhKE64yLB3cOoDMl0YgGFiR2iEFHhmTDiHYv\nW7Gxi+eFAbfUKPvQYtnhOyMnVRyOWYkbs4Q+Wgllais1B3M2dl3zJT7Rl6NX\nfoPgj3DxFxm1Mu1vhWkaKC3kvsxVPMHu+s1cyNlM33dG+xIevhqAM0viE9Hd\n4jDzQ++EVvUM1HuLYBuvsaKMMjIVybioA9ysYhXg9u9F1X/UOdOAjxDkczIE\nnz+xA6UeBdyOBpet6o+afepoFN7WJGw06kb1M8Dsg5e2Jm4WlQYa3bC19wIA\nIagyq+V10Wbd3/KTxpvzM/jXYf77cwo1caXiFISTy0cuu7NuHtBe9ewsZjZ2\nzPyUiPAV8FkORJo2lDLXLpyOA06Kb1qJ91sV1s3Ma0CxaqciOe25ASRn6n21\nqMX01lQeRRVgnMaPIrjkn3S129c48JbrgxxdP8meBgkM5kp2Pr3oTsmsiFXC\nh6Vq/atSrG7/eyPSGcFTwgPt/SLa5LBGju4GVk5Ea9pvwppDOfkJcu8nB40u\n4Psc8Ig/8asPi1dHTklNICd5HniNA6dyMqFR+L4BRgEZqeWznu2Fy+f6GoM8\nkkQn\r\n=mRGd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwqdFsu9rMngMgQdfe6WINVgGUwChjDXxFFeH1MEmvNgIgUGTlt8phTrY2MctRji5b9SFOGHrigp5va9suTWcvNy0="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1616755491.0_1616756443553_0.7288014769867284"},"_hasShrinkwrap":false},"1.1.1-alpha.1618315780.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1618315780.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1618315780.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1618315780.0","@energyweb/exchange-irec":"1.0.3-alpha.1618315780.0","@energyweb/issuer":"3.2.1-alpha.1618315780.0","@energyweb/issuer-api":"0.2.1-alpha.1618315780.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1618315780.0","@energyweb/origin-backend":"10.0.2-alpha.1618315780.0","@energyweb/origin-backend-core":"8.0.2-alpha.1618315780.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1618315780.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1618315780.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1618315780.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1618315780.0","@energyweb/utils-general":"11.0.3-alpha.1618315780.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.37","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.3.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"7a587a5f2eb6d389cfb1d8dc9427142297bec643","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1618315780.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-5VIA1etC2BVsvpXLC875Rp2d9dDkJcIomi3DR+te0ptS2ufvsn4NutTUV1xN8W4swdbOhMpc8UNFAZu9j1g7PQ==","shasum":"13633892fb1c3a225174bf25403f41c485501786","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1618315780.0.tgz","fileCount":168,"unpackedSize":1825426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdYznCRA9TVsSAnZWagAAWJwP/0ABwiSzVi45QVpUu1YF\njUA6nolAcf54zXVtwmO6g1qDRXh5on4L+Xj4P34lKB+aAnOOjZ+kYGbRyk9x\nspVJx/CcoaBvut9yxn71q4SdFdh5qsfnVyLzn6SpuJrRfgRMT/6TCK6xnsrA\n3QyZgq9QDxsS3CCSurFLxqoqCw3HRKCs4V8de1yB59bBDE/9qOZcGfQGKqW6\nuVYiYL3wMfJmyZo/FRYl9YMwqeewN1j0tJbYH/IIJ79E3jOYCjtL9uxyvF0v\nIDAOQNc8WpZOsAqbRS54PtSxMRMtG7yQz2Y2W13L9XZL1ZfaSVYEDxMurNxG\ni4bk5GN4v0OGBvrGaaIKCBM/FCuFE1NUKI2TR4g4UmHNeW+QY1BZRSXPeawa\nl+KJJpUtvbCZnb0ia6lTM4N66f5/xO+CEq0ST8nqMZiVMqBamKRh36J7wXNk\nzOGAlBT6pQM0a4G4BxdN8+zCCZLBnxxMGUxyWQ+8dcdZrTzaE+SVnysRjM6p\ncbP6r0oNJim+Fv4GT03sXZrUZGOfQsMzRgIaudIWAoN7PLAX19aEZdS8HDgN\nR9txoX4TZyghU+FuNhKWFS54RDCnON+k06K+wSCCMqPnsCgQ8AxFH38SrtUY\nQkyGo/jpWcrEwoVH7D99+yp6DVgk+enDG1TLl2Mdg2tLsJvFoh3sf/rNOPXP\nlPdX\r\n=ME8U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDc8q47k/QZRLPzdWBV6y8aM0WhrwJAofiV4PkFfGObQIhAIye8Fa4nlqQnaSAKTS2IFFiBLFpHAtupdFRCZ4K1HOT"}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1618315780.0_1618316518370_0.6350599161343133"},"_hasShrinkwrap":false},"1.1.1-alpha.1618478372.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1618478372.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1618478372.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1618478372.0","@energyweb/exchange-irec":"1.0.3-alpha.1618478372.0","@energyweb/issuer":"3.2.1-alpha.1618478372.0","@energyweb/issuer-api":"0.2.1-alpha.1618478372.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1618478372.0","@energyweb/origin-backend":"10.0.2-alpha.1618478372.0","@energyweb/origin-backend-core":"8.0.2-alpha.1618478372.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1618478372.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1618478372.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1618478372.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1618478372.0","@energyweb/utils-general":"11.0.3-alpha.1618478372.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.37","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.3.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"35c74815a03d311b933e49ca9ec111a6662c6690","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1618478372.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-aGDCm/wzc4smirY4cDp/pviWWSLr8wRIDSoEnAI7g6fnZ5bHTmoT+Lqfo6qSxLVVc+wKTdiSBBW3H9nX9h6Bww==","shasum":"419ce1a13b5d376882da22a8c5d3d5d347b2d35a","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1618478372.0.tgz","fileCount":168,"unpackedSize":1825426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeAWVCRA9TVsSAnZWagAAmD4P/A9mhoXN/Iv4NxY/tTIW\nIGGr8sxd3j8asPkYKDZVveFm9IZoHnnGH2FM+Sqe4uG6PCP4e9UStebRqFvv\nYuqY1forcC7LW/lI5+SU+4VBSO856+VZV9Vbf5gtw9s5PUIBfebnp7ejzYxm\nKtxOBk7YtCGNYjXHGRgkziT9/ACbrwihTFqHx40a555X7VDjAPApNBal1Ipb\nXAFcy9NVkYEecOPWqAM8O6FE22BqX26qdhhdwwEqx+OPo0FgH9eB4FuD+yVf\niOmB3iUoLv7tUYFIkaUr5N4YABylUK4ni7yfojEpfFo18yoh0VnqQZC67B/7\nYLTWXkzVL3X/g3p3RXoZDX8xbVdJ5dhER8IXHsZoeAcv6x1BdDTPs+uZcUcR\ns71p3fBdLiUKhxwzemE+OHLi89jQTxeUX5d7Eoo6CAM6hlPWr4jAZndvUfto\nh+eQDVsOyZUAdx9eGzovbHbf5vgSzAJ3q+TJ2G1RqsNdinvlSfjdKKfj7vhp\nd+C0Pb36nhthxjXHJTH3mV0RWicHUHZpwIxa+RNRJp5gxuS4xdx1tOJKsEt8\nygbtVFeutmFUVN5y5Tn26EQ0AhVQnZuUA71SponeGCvXa38Oj/VT65IXEawH\n5cx58/lv+eD94ejk7JhNII23vityDEaTZmiu34lFR5X64NUwrQabTWB3nQbV\nHpzA\r\n=tqHY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhdhQnQ8yhw3Br6voGqhkijyB2ynH0B6ppltXNQdA5XAiEAqGYhmsa24KDS34SAZzI0RFeUpyM685AW3ryQtHHJfag="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1618478372.0_1618478484511_0.944597825111517"},"_hasShrinkwrap":false},"1.1.1-alpha.1618846122.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1618846122.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1618846122.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1618846122.0","@energyweb/exchange-irec":"1.0.3-alpha.1618846122.0","@energyweb/issuer":"3.2.1-alpha.1618846122.0","@energyweb/issuer-api":"0.2.1-alpha.1618846122.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1618846122.0","@energyweb/origin-backend":"10.0.2-alpha.1618846122.0","@energyweb/origin-backend-core":"8.0.2-alpha.1618846122.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1618846122.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1618846122.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1618846122.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1618846122.0","@energyweb/utils-general":"11.0.3-alpha.1618846122.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.41","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.3.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"43d9a37789fff6d7822e3eab14bf5ef3dfab3fb8","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1618846122.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-3o3Fdm/E7kCGra1PZEOY5/5B7c2ty9q+ip65Tuf+PxV8vykGtQCbBVWxjb6EwNlkE+cDgZiDmzpusyNkA1XG2g==","shasum":"e7683d78bf5488e54441f54a2e8b40cb26010cfa","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1618846122.0.tgz","fileCount":86,"unpackedSize":151049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfaIpCRA9TVsSAnZWagAAbycP/iVT4iL6H5XF0DqVoyZb\nNteaFQLdDjKJKSVLcoe4FYx0P3RXUTd7pOiN72el8B2pa94+M4Xx8LfzhG3m\nOXW/ad0rxpHOMQNKVCNfALNhHN1S2sdS13e638WAQyxG1Wpod/Sopnwfv+iO\n4ikpt1SCEo7RAT+HFHspC7LfVFegLPie+q763r2SJmQEq6CWhTKJOyQE6me0\n+Le1mfuyL/Ta2OkOsog12zwEd7Ta4TRPt+I05JVBqn61CefxDdyrqHcMmS/k\npk881rYZe4XsnvAU0RdEe+p7X9YxSm68kGTx6tO37a8K/NDdd0W7HHvYAmQy\nu5yJftXi0UHVtT/yl35gNHSZojrDI1/9wLY2APhTVAlp57PHH3yRG25MN6cp\n323PYIbsHIw3W6XO5tiSeXv8KLKkH5aGsK1pvtDtLUgGaNak7RqLav/CLCpT\njsKsUCNETa9/x2F1E17XnFcyEmcnbdMCAbfvXYDfmJq8phq4lrFjx+3zfVRg\nBJcl8Gl1Hu/S2KPQjNR+SfERvhNEZHw8o87F2iMjJSaxJcBvRJ4K/DTP59/C\nXaZ1UjbLFEqB+h0RS6U7pNlF4Q+24oOyFOzYIH51j0QQdcspybnULPAMKbrD\nSiYwi/5x5yIH3npHEHqhfgm9E+rDL6CWGnaH8FyZGCylQSsQyDzpXtTbHyqH\nOjp+\r\n=oefg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLWwPBr8JBjJJLGUXdmx3IEua1btNPgqwfKukMTrZ9NAiEAwEvrt4R2ENjL0F14jjorQ/eCBvA5o0EN2Yg2/Jbs8b4="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1618846122.0_1618846248579_0.5207068053819752"},"_hasShrinkwrap":false},"1.1.1-alpha.1618925427.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1618925427.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1618925427.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1618925427.0","@energyweb/exchange-irec":"1.0.3-alpha.1618925427.0","@energyweb/issuer":"3.2.1-alpha.1618925427.0","@energyweb/issuer-api":"0.2.1-alpha.1618925427.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1618925427.0","@energyweb/origin-backend":"10.0.2-alpha.1618925427.0","@energyweb/origin-backend-core":"8.0.2-alpha.1618925427.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1618925427.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1618925427.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1618925427.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1618925427.0","@energyweb/utils-general":"11.0.3-alpha.1618925427.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.41","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.3.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"adde3a8a0e076c579ba80f791dced1badb699c84","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1618925427.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-9ZNkqEVvgcbh7Xf7Z8X4IiF9A/rZbPlkRVG1kQ2fKCAGdSYFQnzLqC1ZX+2J9d+znINDyDjHccLlcpuCLQW/bw==","shasum":"da6e47d5d348a0b83b629e8b4a33933754627295","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1618925427.0.tgz","fileCount":86,"unpackedSize":151049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgftfhCRA9TVsSAnZWagAApSwP/jlHr80X0qfrfhgFzals\nB4Ifl+7pImO8EVGDHP0MyqQvfhyG87q0lKHhx9qCbYQ+2W+FAvzeDaMrWOY2\nIdSRA/+mvyi1TEy/RxytWcW7TMj6dBmXHoIDn9g8mXsGXXWrmvPvGKzeJQgl\nwHQDf3iNXL9lZ7SQS3/i289Sh1/nTi7gE+a2M3HoFf+iVeItL3C64iXwGPee\nvlfsjskGWGOJtZJ0TEG3qC5F9r8e7/QOelYNYFa8E9nWEqTYxY54Uc3lrm5k\nztuWf2jxM9WhY006peVX4nDUkFioEKLsX6cBVQooVhIocORf0nSn8O3qgc3O\nirP0F+31/P0oFbR54CtjvsYdViBQv38XiKiWevmyURKlUanhV2dMLwfnXnsn\nNqj7k7vV0VsP2mNdD+25GnIob9xnaxx4819iYCHgb7MlvWSSTfngwYega+oo\nl9VnRFKO6t9WEp5OOjY3rlJENb7UJ1pxrnsJ/HvRF8un5k/Ci31VUrNAGZwr\nzL9HLM2RquYWCIIaaWZ1RDzQaj/ChGLdL6QPNkksBExU142gutsVq9cFgQd4\nibI8JvhIVg8QcxDRkyq/+VQKMXOWKpAJCxbFp/KUNK8sw8NYmyfV8CyFCOIF\nu8RdPs7STbTK6iQUo0iHg+1WnSAgfLfTtpj5xBQ39yLmw0yVO6cEO9VD8idw\n0BsT\r\n=JHLv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBcdc22aaq/Fip+/ahT6JYTOL2LgizYjV0APW2vCicddAiBNZYNs0yhNY9SVzrach2hOglehc5iuYtbMRU/8TtPMdw=="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1618925427.0_1618925537194_0.9299524721449046"},"_hasShrinkwrap":false},"1.1.1-alpha.1619008831.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1619008831.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1619008831.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1619008831.0","@energyweb/exchange-irec":"1.0.3-alpha.1619008831.0","@energyweb/issuer":"3.2.1-alpha.1619008831.0","@energyweb/issuer-api":"0.2.1-alpha.1619008831.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1619008831.0","@energyweb/origin-backend":"10.0.2-alpha.1619008831.0","@energyweb/origin-backend-core":"8.0.2-alpha.1619008831.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1619008831.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1619008831.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1619008831.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1619008831.0","@energyweb/utils-general":"11.0.3-alpha.1619008831.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.41","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.3.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"70619faac55eff3d284bfd16bf61c88607ab448f","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1619008831.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-v5DLiqrZgzeSXh3dyCe2OYSpl8ceLQffSNwo2UPUkWM9raLhUTxtzpAhInthPzroubInGdX1rsDFrXMYjA7NoA==","shasum":"0bb438d301216e2bb9005d3492cf6c342e0ff2f2","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1619008831.0.tgz","fileCount":86,"unpackedSize":151049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggB2mCRA9TVsSAnZWagAAKIIP/13BHdjSYYZ/8KiL1A+i\ngnVy1n6c/CatbYcpiuRltYYkhvYBLlV9caWspRUuFidqz2UWAjGR8M/iAzCT\n+6Cnv5EDYUsGOB2AL/GysAoa+YMAc3x1mU3BaVgtKwPrrSCMaTuOjmvRz9rh\n0y/Mvl+FBubcwLBMkq8oaPMNQv2LEyjYt50Epn0+qlVkZrGLz7gFr8hPdwar\nJ2vzPYk2uhuqQKyM2LdGdpMc/7FO6pyv7hx3Q/U0jb6SL1MTjQvDthnqZkmV\nw6IzyYd55bzih/xz0ZUYr2hJc6fuuoT6Szl/3jKpdsbJ+XRJP1bZppwzplOC\neDRKk2qwXOsRVLNRLQLTTB84sDZWR3L+r+3n/JnscOi01SSloGDw+LZy4Bxd\nrFL+cKF+Ete+Hd6OS+SiMXaniHEo8TFB/IGTNTe79YEWWESSP4OFRrrM2kQS\naNPs/6Qd3PdpSXPS+XmST3i7Lc5PuzMyAxu3/ouWsb+cdnSDOFPbC83g0+wC\nMfTMH6/845Pdc8U4bYy9OoEocV8cxXlH0S3R0kCO6OkuRZfTbDbVHGxTXiw7\nCCSSIfChizUXbpIiUfzQHgqsUP2IpwOgTxHsIwj++R6+qLQ7Ucop4wVg/caH\nR05rrKYtd78PMzXefS6jm1FTScRJzeyfG4n8sa2ONz8QUxwRHbgV9tVu5C5N\nvjKJ\r\n=ULtf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbWBmCgGrUoqAqCDRhQdaoOy4M9cxtPJoGDhE9npuHhAIgbeXAoD50uG/xm3xlxXkQWsJRqPwUskZIvUxcR0kzDto="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1619008831.0_1619008933555_0.23508105840245075"},"_hasShrinkwrap":false},"1.1.1-alpha.1620996803.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1620996803.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1620996803.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1620996803.0","@energyweb/exchange-irec":"1.0.3-alpha.1620996803.0","@energyweb/issuer":"3.2.1-alpha.1620996803.0","@energyweb/issuer-api":"0.2.1-alpha.1620996803.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1620996803.0","@energyweb/origin-backend":"10.0.2-alpha.1620996803.0","@energyweb/origin-backend-core":"8.0.2-alpha.1620996803.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1620996803.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1620996803.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1620996803.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1620996803.0","@energyweb/utils-general":"11.0.3-alpha.1620996803.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.44","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.4.0","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"cd82d28fdc6f1d7f850799eea318b52697e81488","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1620996803.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-J4O1OOJ8k2wrkPTt8j9CChiLZ8ysxvtKNYQjkKA141VKTpfl7cUe2kTQYE1CGUmrToPZ2+oCuLpkisgxF3WUtQ==","shasum":"df5f8eef3ed0c5d6d15993bc957cbe02efcb8c88","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1620996803.0.tgz","fileCount":86,"unpackedSize":151049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnnMpCRA9TVsSAnZWagAA4SAP+gOZT3MuUSsz09cWqce4\n7IU13mQHhler3UfTG9SSFCIrj9gI3sfmrp0eO6RPoAc1YC8JCZQKcn6iVV6A\ntXQne4r54xn8XpcE1EEwQg7J16gEpHUD+m2fCHY87hid9yzxaDfM9G7MHbcJ\nASwCgdf7wz7U1x4D3sEPcSzXa+TaEpCHvIGKjyY2AtZU0NZPeA/aVjVfcNXH\nkSJ/Ex3DpD0ZQxb6sCkRtCKShtidFPZSegAAlH5Te1qDEL4FIZ8Jd2sHetzj\nvCOFNG88tVQJt4V/Zv6aFVcGn4PsBjJEFldcU2YK4Oo7LDfQaEZ6iVUrwRnG\nnkohbqN8SAjj8pGer1th5QLVTDiHVPUlWPLWW+17eN/1/WEBuHsYuV46UKdg\nBwtVozu9jV2w664qPE3VhQFQ3DR7TsglhPBRBQZ3zTAlDzcm3eZd6uqcPi5E\n8YAsG8R7/8C1qXiKOAmZBHzgQZKoP8oojVHG2C9jkhVY6C7bYtpxXMetUukA\n7qkQSMm9N5+pheetI6L/Mpwfsse2Q32AbR8ndRUC1GhhMbFr2T5zvZk8368l\nc5e1aFutbMH3hzPCbFh6dRM/YR/xY7gm9oAGcPILDnNuV/rMwk+yLTTKiVKn\n/SqwX98Z/OgsNgCvIlcDb0NJEkOLb6HVbXMUdSXQfSiUsBFnxpfQAoj9zK3B\nlebT\r\n=dt6W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3Iw0fNmKtjtYwYrmu/iGQA2j3Ndj8igBxH//T37S1RQIgUFGKzU6SLoYaEzqujrl9Cj73p8fulLlFQRhRuhlRM9Q="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1620996803.0_1620996905266_0.5771123051461755"},"_hasShrinkwrap":false},"1.1.1-alpha.1621325564.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1621325564.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1621325564.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1621325564.0","@energyweb/exchange-irec":"1.0.3-alpha.1621325564.0","@energyweb/issuer":"3.2.1-alpha.1621325564.0","@energyweb/issuer-api":"0.2.1-alpha.1621325564.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1621325564.0","@energyweb/origin-backend":"10.0.2-alpha.1621325564.0","@energyweb/origin-backend-core":"8.0.2-alpha.1621325564.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1621325564.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1621325564.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1621325564.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1621325564.0","@energyweb/utils-general":"11.0.3-alpha.1621325564.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.5","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.45","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.4.0","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"309c43acca868157a0aad7885d3b01942b86a383","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1621325564.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-JYqHg7168gCHUpwjO+9OVAOOI7LyTniRf/pAzz/Gpb66i6fo75DeoqHnO4wDJh5WpWr3L7j2jj5//Qh4sMERvQ==","shasum":"5d60eea3a03a888628cabdc0f5f3dd43ca89cc68","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1621325564.0.tgz","fileCount":101,"unpackedSize":163690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgo3d6CRA9TVsSAnZWagAADwIP/1NoIqgAoHjY9Lr+iFmY\nSDIrrA83op2ZCdqpEpM+5JCze5HaMeNhBXAi9eysJfvOoVr7+VrI3PykU57Y\npsP7/sRUloc65R5qPysoaHYmv85EGIT0sU8upWRNF7QIf0isGidski8my/Kn\nQhAgQZcl5fVFfoibGxtnpdugT70WcKOwzeQvr/4QEMT78S7n2r88thxpqG1l\nLrZf4+Jf0te/3pOdG3jPsCg9meeA49/neURtzsWVFH2Al5/OU98wLrcht13e\nU1jWlBoWQ/4bGttvUgIt4YqR+E47FEACgJ6rhQMbA6/fgWRCCXTeTA0i8UPc\nA6M+ENa9Kprh7UhhRp2/i1xJ8D3hJUrd3S059Z+x4kH5QXrL3tszIhofIsMk\nTdMIf9ndHd51mik6AJmdE2A3zPgkPLwumF+DHXeD4nubMgSHwdFk3i9h5tov\nfZykZpi0Lz4yA9eVYWhpxxMN7BWaX8zAI9k0Wug6Mf7b9BKxBhaLfi60wcRo\nir+8AvD24H9o/tkZiZCXxBIbqJ41TwghUWrGwVdkJ1hIcm1T7J5KrPQG9L7t\nbjjcAIr6Pj2Pd/UFGHaIOAFXUJcFRYUCd+omD6jMWo61kN6Lr6inUfZh4tT3\nY1UdWLwfe7zqK1REyy9UZT2Z9sISOsW8lPZKOHhKfOGIMmCAhjxI4NhNVkeM\nnyhF\r\n=WIFa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu4LwijSAYTGYS7RnWT72CD1WYvrwzThRmY/e2+EOW4QIgCJL6h7jlAF6Ljzkq1FGVOJPz4txzWwYd30cpL/Metho="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1621325564.0_1621325689774_0.1760781891203278"},"_hasShrinkwrap":false},"1.1.1-alpha.1621586076.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1621586076.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1621586076.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1621586076.0","@energyweb/exchange-irec":"1.0.3-alpha.1621586076.0","@energyweb/issuer":"3.2.1-alpha.1621586076.0","@energyweb/issuer-api":"0.2.1-alpha.1621586076.0","@energyweb/issuer-irec-api-wrapper":"0.3.1-alpha.1621586076.0","@energyweb/origin-backend":"10.0.2-alpha.1621586076.0","@energyweb/origin-backend-core":"8.0.2-alpha.1621586076.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1621586076.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1621586076.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1621586076.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1621586076.0","@energyweb/utils-general":"11.0.3-alpha.1621586076.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.15","@nestjs/config":"0.6.3","@nestjs/core":"7.6.15","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.5","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.32"},"devDependencies":{"@nestjs/testing":"7.6.15","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.14.45","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.4.0","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.2.4"},"gitHead":"680e2acda890eecc66ebc126149a60d48aa50112","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1621586076.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-qpxZrJ+Gl+vTN8+NLJBXJHo4J59RHnwyjs5VDUFD6Ay8/YxM1TRNc3GMo4zdp97bXBlMVakBoY0SclqyL/KtJw==","shasum":"35065028c50276d6834272aeeb218d3855eca37c","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1621586076.0.tgz","fileCount":101,"unpackedSize":163690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp3ENCRA9TVsSAnZWagAAhNQP/22xFfx/KFDSEcaH4Ps4\nAETHtvGmhJIDmhRT47WMVcxt7My/aX+ztYJInlQvTCY28szA6vYywqiN9svc\nSjqpX5mkmKBjLM6MXRubDiHLX6eKpybJiVSQ1F18i8nVQpslI8NWE4e1ga6b\nsRQI0jmlJ3p4438E9WZkRwu+rp4GN3WLhdoXOiRnlpNXyCEyTNXGMOxPJDOk\nNMm6G/VH0rAtg/mAHnRrgINoY82IDiO+y9RakLL+3YDHD/abYdEjpBpKGjyx\ndSAWMBVTLepYjU8Wwa38/uJzvS9vACB7A4D8dFz+lPim4Me7CxYoIpgIJKL2\n31YINJ0HiDO6W2Uy6uDgZ68RvS66iUL6uT3ehMyoQ3jN7g8Mdeuv7fjh9WwL\ng3PnDREDP81pfo4wVwWg5X1EFVD+gPbLX/1JFMOEtN0KlKHRi1kO0ljnmEZP\nJTTb0bCpL64l7dJMJwWe3EYUJ4qdh9ibll9UkiSUal/v0VJaJatsjKZkHYz2\nv3zLgjcxl7ft9CSBXfetVkIOq5IjKIDPORTHFZMOaSdXTdCkfQ7Orf4IKs+t\nO8sB4yHYX9RMbdCpcIoug8kCLT051uh0gIG0JRZ24SGFzzS9wbpLa0Ftb+zL\nIrsmPGvTF6bbwgR/brRH/z0UbYlowAvu8KrW0sMQx4I9ROvDKPvijAezz6bi\ntDzb\r\n=Yb5E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4AqGDeb9GWd2VxPcczKvScbaIWo7ZcPRXmogxJCxAswIgNeePPuhIqn/hN0wjAc5XocBJArjxRbO9m5gFYmA41os="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1621586076.0_1621586188886_0.45902906974048796"},"_hasShrinkwrap":false},"1.1.1-alpha.1623073145.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1623073145.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1623073145.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1623073145.0","@energyweb/exchange-irec":"1.0.3-alpha.1623073145.0","@energyweb/issuer":"3.2.1-alpha.1623073145.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1623073145.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1623073145.0","@energyweb/origin-backend":"10.0.2-alpha.1623073145.0","@energyweb/origin-backend-core":"8.0.2-alpha.1623073145.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1623073145.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1623073145.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1623073145.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1623073145.0","@energyweb/utils-general":"11.0.3-alpha.1623073145.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.17","@nestjs/config":"0.6.3","@nestjs/core":"7.6.17","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.5","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.17","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.17.2","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.4.0","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.2"},"gitHead":"fb86b3930f47313bf280636ac5703e78d6f5ba69","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1623073145.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-IA4ufdzc4eFB7oQl43DQkCllgr7jtwNaqtQ0NUm9UybfwKQ/kNcG9YmzerX7dKO6npV6pxCcoUuwsK5U+niS2Q==","shasum":"9d1554b6ed75b178852023e8e591966e9e75d268","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1623073145.0.tgz","fileCount":104,"unpackedSize":168470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgviH4CRA9TVsSAnZWagAAcPsP/37Qp+kyxMJVQ26vUtZl\naNDASi8Pu3UmnurzFqXTr4xP2nVYouULBh/7U5146D/ZOBRKLj9SAj12B+Zk\nFBf7o1bysmsEqp0+US6oFAQE6TPqwnTre1r++9vxGAMVONHq2qQ02Jqex/9z\nBJmLCJUI5CJG4+EyFQB31ZfviYSB/Tp7dGmpAfX7Jfi6Jw4LisAIte3hotAq\np8cqNzTyuZoIcS05HGfLxZaLMPe6L+B0hx/VA29O0EJ2tWqzliTzrq4kcHDJ\nOSx5MrOvhHhH6hZIklRnF4TvES34XPFhhzTji90GL9BNJUuhAiGLpBtcFnPg\ndK+G4smBxiSwevgEKxyp6limVE4HvynwZjZqureUFjkU4JSgOTH1JwuzXHi1\nAAUOMBGg6x0G1C3/XOX7r2QUi4aLLIura5zglVhBftswr0Lq6xUE1J/LMWiD\nw9bjynY4Qgj07Pzbhvp2lLQEG7hHMXto9+iHc2ImNZt2N7Er51XJ4WIYRvjQ\nAmimHhIthURzbhISeTrICQELUwbqiR60JaXwyX8+qrsorg28UszKb6I33eUu\nnZKdgfGwASfKIoF+q7almLSwLUzySgyY2dm6oV5p8nhHQSZvZ6YoIiZOu7tI\nexjYU883Horz4TtUXK2i6/c21E8+L9sM3KokBYqoWiBMFXHKWe23HSAHE+FH\nd6aI\r\n=JtBK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+PpXgvTe5Ml4mXPVd403CUBJ2aSDyv80U7CucdK2nyQIhANxzQL3A2RW7m6gCgwu9W5ChRMz5kpLyVSkk3lnn+Lz6"}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1623073145.0_1623073272669_0.1928946157950191"},"_hasShrinkwrap":false},"1.1.1-alpha.1623082713.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1623082713.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1623082713.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1623082713.0","@energyweb/exchange-irec":"1.0.3-alpha.1623082713.0","@energyweb/issuer":"3.2.1-alpha.1623082713.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1623082713.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1623082713.0","@energyweb/origin-backend":"10.0.2-alpha.1623082713.0","@energyweb/origin-backend-core":"8.0.2-alpha.1623082713.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1623082713.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1623082713.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1623082713.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1623082713.0","@energyweb/utils-general":"11.0.3-alpha.1623082713.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.17","@nestjs/config":"0.6.3","@nestjs/core":"7.6.17","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.5","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.17","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.17.2","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.4.0","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.2"},"gitHead":"fb86b3930f47313bf280636ac5703e78d6f5ba69","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1623082713.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-Yqdw/E1gyuGG1P9LV41yqE0GK6O4+TXtYfIH/oo1Y8uMcOB/+YDO6iMYawC+pBXjLZjuARM7A+UtTA6dHgDlDA==","shasum":"cc87a7775294f2bfec5ef7e148eb6b2a6a552d52","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1623082713.0.tgz","fileCount":104,"unpackedSize":168470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvkcwCRA9TVsSAnZWagAAbkEP/2CsBYcVsdulFrEcbTpt\nZOAjn9L9+NwJ7bp0m94ff/MHDmm2kLPieVGZJnP5RE/XcGrHhetzQS3EXkLB\nD3ajy/6rJk5jn/2sZDuHrtJk975Xm1Dg0Sx1m2YP0pfSd2bJHovQerkg/wKz\n9Ia1JuJCONoSTqTGnlzcmxFIEc2VENuzv+5LAdTUp+QINyXtDEeFIVgUlTOp\n4mW1oVJMh7f23sINItP95KeoOaiHkB9IBwvRk/TA8NjkAh6suDQucnWBcq/I\n83ciX0LeDGMgXNVhKWX4ck04QvMea15LPQyHX+DwXZ5czjpEPRRsXGp+WruO\n1f0Q7h56B8njgDoC3nvLUPOZz2vzJLEVwgJgh6wQWI9qmDovVkP7Z+nU553U\nvTU2mH8RUupj3/Z7i359LKc2fc+S4b9slER82OA1ARl6UuF0b9earuPm/zN6\nSTuIouAHSwn9ZWytqH0G3SZTyl4C56rvZgRs4p6xLqjK3Y20EHTFBr24KEH7\nnx12XhusMc+sWjS8wKonl7YmZlOivR0ayfd+YTuW9I1vIsYJPJz0B9t8p+1p\n6ITyEbTbdF6q+xVJeeKLjLk1S+OhcyBTzslAxS0YQpivIbiYuWGDis8XhEH2\nZb4L0v6WQ1lRAxo2mXiYnCB+9pD2pSyjQrrT7aAixZRLSs418cWiIXncOtSG\n398J\r\n=JOa+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXnQkX8po5K5dfTaVeW4ZP2rNAsA2GhmjgMtN37b02ugIgBt5l4C88+k84FOhEUbxv2kKYapqBr21Uibtblme/MLY="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1623082713.0_1623082800767_0.6659888709990756"},"_hasShrinkwrap":false},"1.1.1-alpha.1623138698.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1623138698.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1623138698.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1623138698.0","@energyweb/exchange-irec":"1.0.3-alpha.1623138698.0","@energyweb/issuer":"3.2.1-alpha.1623138698.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1623138698.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1623138698.0","@energyweb/origin-backend":"10.0.2-alpha.1623138698.0","@energyweb/origin-backend-core":"8.0.2-alpha.1623138698.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1623138698.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1623138698.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1623138698.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1623138698.0","@energyweb/utils-general":"11.0.3-alpha.1623138698.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.17","@nestjs/config":"0.6.3","@nestjs/core":"7.6.17","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.5","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.0","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.17","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.17.2","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"8.4.0","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.2"},"gitHead":"fb86b3930f47313bf280636ac5703e78d6f5ba69","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1623138698.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-E/KhpA39LjS7seQEhWeIEJf/M2HK/2BN9l94TWFdF12NnczCakEPqkbplqy1X88cV2GKl5eQdKhBAFhtthF/EQ==","shasum":"c4510fd4f1903cf8a6f27d7df90e63c74f8c62f4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1623138698.0.tgz","fileCount":104,"unpackedSize":168470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvyIkCRA9TVsSAnZWagAA/tgP/RzmD9vErBFBZIbaiBHd\nP96WnUYnHx3zVu7SVswoX9LUL9IcCPbL8TpHESupk1g//TbCNvMsgX910vJV\nYvQTG6JiCJHGEs99VAavS07+RFJZ2URxCXaU5SUUuZG7jqcD+MRr1xD7h0RS\nPhE0LesTX2PM69GE+8WxeL6NsB1XoGQbs4xuKuCNHGHAKgHZfibBwZzx4MZr\nEk/X8GkwMHGxm4JJzchb1eMugYsvVjDPGGDWGdGdl0ByMhy/ylWrol7GT3vW\nYUAQ4p38iYxXigTr6Zpz2Zj1OhoSCXW2KpipeQyuMio6IvmHiptRS5eY9tNm\nH+ej65znXUnf2GlN5ya8EWSeO5g5Ch7UPIPKHJRUWV7O8ph/QGex0ZX+rvwv\nXRMSlOTnADyvdNgPG2xHfVr5xhmPh/M7fPS4vS8izPjBwWzeWB2/NjdJSH5q\nRanUcNrGS9BY3PJE3tRxw3pvGw56IkZBaKflIKgbwmRZtjxgeZutUgccPOux\n82owg6L1oJgzy3XKnV/aCh/Skj/9ypPr+AK6cbhUoICeKLBTNPVJ2HATM81A\nLBM8RpzvAOgg4JhstIHLY9NLJv2ynP8GbntWmuou6VgSQtvoZvbDYiSEu1l2\nD6Xh7DKN7xisKazEvDWnC0BTxNglbQ/K+2oPZjzrmhMak7aB+SIey2w1dnRc\n61e3\r\n=bpks\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCw9P8z7aSQQ5ywAajKfsp6ns3SOlb45F25g9lGngHjmwIgLI2+0ZcGtTap7ibtG5y8MtbEZjWAwv4SndvPhPMbWAY="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1623138698.0_1623138852094_0.950268214998097"},"_hasShrinkwrap":false},"1.1.1-alpha.1625573089.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1625573089.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1625573089.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1625573089.0","@energyweb/exchange-irec":"1.0.3-alpha.1625573089.0","@energyweb/issuer":"3.2.1-alpha.1625573089.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1625573089.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1625573089.0","@energyweb/origin-backend":"10.0.2-alpha.1625573089.0","@energyweb/origin-backend-core":"8.0.2-alpha.1625573089.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1625573089.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1625573089.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1625573089.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1625573089.0","@energyweb/utils-general":"11.0.3-alpha.1625573089.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"0.6.3","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.17.4","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"92f2dcd133c094f2440b06b426fb679cd192acd7","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1625573089.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-4DA1hJUbQrTOTScp+cY/Vk+zO2P5CEuOqjdVq0OeTRiMhbrD8iAdm+3OKyWrRyslgcUybAuN63YlptQTfqII3Q==","shasum":"ff647bdc5e3f1c13632c83ef4a3f2267c6b4f869","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1625573089.0.tgz","fileCount":95,"unpackedSize":152683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5EpJCRA9TVsSAnZWagAAnEwQAJmracgtoJxgQEmtptFP\nlUiwm4sEqIxXXFGflDnw0RhDyAEq7lUx//QYQGKKebfxfrvgtJnTOoleOKYq\nyNu6R6fthQyj7+8loMG3EjC3yYujpRZWgUsvq/M5pNhPhUZtVvxblcGQ2Mys\nfzToGdKxxO5GgWFLnowvFg/rKFqIQA8roNbeR6n+jVxgSOYg48e7USPIMZTQ\nl9MA44mzGs1MHNqblhkz14gRAGIZznq6PCuhG/pUSAvWyB3EzukArQUJFPpe\nGRwFe8kVETMXlMt8zK12LqYz5gnWH5qJiiFY3hVcYatYPfv0WHWC30uevU0n\nfeoyXFtiHAvflYFlAoZouLIoabFdah0zUcYdXhxm7YIM7EMFRg0gdPl8u5De\nT+tL9stxigCqx08kPdYe4Co7iY5vWvTrP5Ee2oNE1RMkEqKBG/edRhSiGICh\nMlvSZe1tN3YwxJW+FhQ19YdyOB1ew+SM7NS60XpUhbF5uPqktfRGC8vgYB47\nFXXC31QUjLV2lSH5OdWhFZeNTyro6DncQBMRWnOUUWpAvGFakSIP1WeGojz7\n1mlUqpKE8NQqJbcb7ejlFwCYyIqZXvIF34Jt4iEhp6NpXVCeqElnq5NH7SLR\nPFMs108dgX82xmYAw3WoFJrQ3F1EY6+i2pAQWhLXlPx+tgi9fNfxcDBRA4hJ\nPlqF\r\n=5QtP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBnk6yhJ/4nh7++nEPCCdh1BaTkT5zLfHBouwtvcfeBQAiEApTWp6iT1umfobXNx3xp6TkVe0Ze4y9jYtyWlLODpJhE="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1625573089.0_1625573961019_0.019826354753360365"},"_hasShrinkwrap":false},"1.1.1-alpha.1625651017.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1625651017.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1625651017.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1625651017.0","@energyweb/exchange-irec":"1.0.3-alpha.1625651017.0","@energyweb/issuer":"3.2.1-alpha.1625651017.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1625651017.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1625651017.0","@energyweb/origin-backend":"10.0.2-alpha.1625651017.0","@energyweb/origin-backend-core":"8.0.2-alpha.1625651017.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1625651017.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1625651017.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1625651017.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1625651017.0","@energyweb/utils-general":"11.0.3-alpha.1625651017.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"0.6.3","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"0.4.3","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.2","@types/mocha":"8.2.2","@types/node":"14.17.4","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"a5a439d9065c99daf71eaf48aa7499d35177104b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1625651017.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-kmoy/y5iGUmvHNKIM4/dFqewsmoLE/nIzwvPn/fYEBc3V2DXiwis5m8t2WBr4yO2idIhNdtYwznpvoiBGV1+Yw==","shasum":"e6c1f5b29d5ac4d8852ce6c946d43a839a288239","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1625651017.0.tgz","fileCount":95,"unpackedSize":152683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5XegCRA9TVsSAnZWagAAfzUQAKPt1ut2ZnWj2P7L50bY\nIpymp1uD2ubclYv97jKEdcoj8Ac+L0YHt3k+IHciIhCXkZd/7xzKr+lN7FHU\nVIInvW5brjufifPtdDm90qRyLsE27u91X26A8XN/0OeGUgWCaZsx5wVE2RLi\n7p94Roj0jDnNbC+fSnd1ZDSPzme6y4rx2yd855ACH7fF+5N1kdUunxApCUvk\nPAVEzqQS/tmPYJMMz+QHwhxppx+cyB+b+9XEyf9ubxKGpUQ1ByOL4Qbk0EKm\ncakW34lEkwyf+dhTocQ+QkVelGSg6pKZlC46V4Sjhcz8vJAQIq9RoOacyfPq\nuKvdDetH3UVL8s46m19aFGNNpDefN36INUUv5ss87AlIkeARUk0KMm2qTTZF\nXh++T/gUK+ojJsDRYMBsubPBjf0h9KEbVhyMK9NUGeFCu1boMsrRlip5+668\nFTWxfx+52HKTfmlSh5l8StiG0/bruhuLav6oaDfZfy9n1QnlVARDFoZzaAl9\n8NANlzh5VZ/w5KIOIRwmFvx2qGbFyfSJ5prso2ksk1fSt6GQnl2Agu/ApoQZ\n+m12ll+vBHN3k0uIk12NW0C2vmWwIYGm9GZQd+GJ24DWKr1C2m0KNBg4NExb\n2N1Fy42/mhSHwlmX5wln9PqH9DpgGNTBEZkhhmXi/71sKgYMM1w9jrSnM5PC\nfamz\r\n=OkeI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGdBSmB4rRSCgOpQwBTk+seMa6iJK3jJ9UIO/EdlmnNDAiB4E3wqCISVZOgQMdfH6GKc/V7FVmbPe0vOmYM9txpPuQ=="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1625651017.0_1625651104518_0.4158692328548663"},"_hasShrinkwrap":false},"1.1.1-alpha.1626129410.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1626129410.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1626129410.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1626129410.0","@energyweb/exchange-irec":"1.0.3-alpha.1626129410.0","@energyweb/issuer":"3.2.1-alpha.1626129410.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1626129410.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1626129410.0","@energyweb/origin-backend":"10.0.2-alpha.1626129410.0","@energyweb/origin-backend-core":"8.0.2-alpha.1626129410.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1626129410.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1626129410.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1626129410.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1626129410.0","@energyweb/utils-general":"11.0.3-alpha.1626129410.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.0","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.0","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"8.2.3","@types/node":"14.17.5","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"b54774cd9d9071921e03bc043be68800fdb64f35","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1626129410.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-AP8qbm+UXZuU1bzmwYmctb4kK+mMSmPqFHfQ9eW92ZcCkivvOHsvbtLXbABZE7kFuBEMoUYXSqv5Lsd92mcQDQ==","shasum":"d610d1b3f20f67066b4cf331508499392b00370e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1626129410.0.tgz","fileCount":180,"unpackedSize":1690962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7MS5CRA9TVsSAnZWagAAYQEP/1gl3EOlDTobKCzy6jAu\ncA+6awbrrcoYpxc/DMmXOPS2j2MoisJ2X0X+6pjEZdBeSnGUzjh2YWwhhdVg\n6NftR4DHoBk1ywVDHD6Qb++ypa/f1Nxp1Cyq/p7CoNcnwB/W0hV2yqTgaI5y\nhPnqtxF9FbVP7WBdmFVp5bjnCNyugfxF4/9iMHkRwjeM1h6YFvwXMS+DeAOr\n1t/osZqqAVYzq37UN2pwUHvrDgHkACqOYNNTtqAQq0KF5620wNpb8/iFPmqk\nhnRPDQOcma8fVi9VKgFW8eV8mnSD+U/yZzGZ/j2QDZI6JNVy0Ld8CH7ujsl9\n9TeQFVqAuYMUMks8XO3uh3mOukDIZT5Mec9BKIxFELpA7ATCwvihy8lmqyZi\nW3/6GrMUHoTfCe/vELajsHcbPuRDeBjAjozIc4xyCX+Bj0bXE59sTz8zoMU5\nFF/cfev1G5WBfdDxPOEXW/itPMpo5Ti/6ILBtkfaq56+tGY9kasi5LT3g4f0\nA0HmonZYfwB8sNN9UglbMP9MHPv+TYVQclUMJYOdrwJswYvJKZYvucpfY9n8\npX+mZlXwYieUNXPfUo5WxvqJrvl/N0bEsJzLMudbdLZtYWTiNsgWuTslyB26\n28Mc86fg/h68lR8mOfZWWDP2b47av9bj7cH6jYtjM6O8p3J/av2H13D/Ugr7\nWtdO\r\n=EH3C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFK2fShFdytBUyz72VCYn0BjCuK0pVsSPHFlaON+gQTOAiAkh4HzzTa5vNRj+p0tz5qs5kSgK0KAY2wu7U0nEwejGQ=="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1626129410.0_1626129592736_0.06745632737999507"},"_hasShrinkwrap":false},"1.1.1-alpha.1626133870.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1626133870.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1626133870.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1626133870.0","@energyweb/exchange-irec":"1.0.3-alpha.1626133870.0","@energyweb/issuer":"3.2.1-alpha.1626133870.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1626133870.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1626133870.0","@energyweb/origin-backend":"10.0.2-alpha.1626133870.0","@energyweb/origin-backend-core":"8.0.2-alpha.1626133870.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1626133870.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1626133870.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1626133870.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1626133870.0","@energyweb/utils-general":"11.0.3-alpha.1626133870.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.0","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.0","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"8.2.3","@types/node":"14.17.5","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"3922ce2c6ff6579de18ed5d3d06824b0faf384e4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1626133870.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-+wqScjb9K2jWsZeQmEVuBGvveb7xLTtphI+EwLYiD9uXdYRvv8qVQREOGjJOosoVI0QuE0VyC61V0Avv9Z7kxA==","shasum":"2ed3e44b08e4aa6228b81793a02e9402507a3e69","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1626133870.0.tgz","fileCount":180,"unpackedSize":1690962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7NYICRA9TVsSAnZWagAAkkMP/RouMqW3JP6rm7i7H3l2\nk/aPAR9GT9BbER/Hcv4rppbhN6RLb5RikXzUsb+HrgL+zs0Z6XW0OIwG+L2f\n3UCtDQAjYwjxhGCc84akMZGB6R8GRx/DVA70P6Y6xN+8KX2EYDtlgHlMshRN\n1bgTAL3g6bY9lks3ocQrdKm9ebLu/nntwM5MBC3/fz/jV3THN1+96dc56Dqy\nirHCX5R1x9t7zX0WK6k5i2+9T0j8OmCbye5Rg4UPaCoPswZ1igZ3AcGzG8Ka\nqeneMAKMYXyLfyX3aICgNPR2EsHw2AbMFWBJxqc3Wuh0+DtZDPtRez79tTpu\nSDaygN8Nhyqmh/w/5v6/UJooBsyBBYhyOio+zW8aPAhejSCEY+maM2c1NFOW\n7SN27eiiozP050arUR2gJfYB62zXSv3yRRGacI6z3pTNrf9tMOrhR4FjkVRj\nLzs1S0dSS4dAd7yGXFs9/BfwXej22biudXBf8/NMFGzILChapih+N685S4XI\n9NS7OMLBbTVhMww57FCjrnj4R5hW1Ub2L4N4i4eoTF73CUuq+PrccOtmVLuA\n3IE0ywAgsgJv2u+Mea9SOoj79pMAnmJg5oBodwWm/uTDGDdubtwpJYY8A0Ff\n+Etovm3vgVO+E5yXlsWOLpdsZlqckPbUxfjcyyj9izDTQEb97UPbNqrue51I\nLW9I\r\n=OFBL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEoatvDzZepvqbCtg+DGiLu4E1u7FkPY5tpDXPCHZ8f4AiAIxywL01g6/HzB1oyQU3yYuvJEiSS8xv48E1avn3H9mQ=="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1626133870.0_1626134024008_0.08132449052819357"},"_hasShrinkwrap":false},"1.1.1-alpha.1626427098.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1626427098.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1626427098.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1626427098.0","@energyweb/exchange-irec":"1.0.3-alpha.1626427098.0","@energyweb/issuer":"3.2.1-alpha.1626427098.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1626427098.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1626427098.0","@energyweb/origin-backend":"10.0.2-alpha.1626427098.0","@energyweb/origin-backend-core":"8.0.2-alpha.1626427098.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1626427098.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1626427098.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1626427098.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1626427098.0","@energyweb/utils-general":"11.0.3-alpha.1626427098.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.0","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.0","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"8.2.3","@types/node":"14.17.5","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"565150b647a4f8c564c646c37fc92633d786731c","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1626427098.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-RHJ82xjP3THTwusP1Qb4Te4ITUFEyjH3qZoZnlGswT9zMuO+kxmbfE1wu3pFIF+QzZsSZaQfTNhQ2nyEMsHhCg==","shasum":"578f20c074e0022edc18952ef52b988aab4d2c79","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1626427098.0.tgz","fileCount":95,"unpackedSize":152683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8U8eCRA9TVsSAnZWagAAEeAQAIgZBFCxdIrAx9LyI55J\nGiaZe6pNPAvu2OgIIyU1zIvNhPV7uErJzujTAes1p/lCJwwcWU8icjKKMuaC\n73uaUgGs2PsuM2btgPAD9lsxT8vwEwmWZGm0yisHzF4aULyKz6kfg/5vqTFH\nourlybEt9iN9DAuIi+LTE/iDqr3zUM1EkLUxhmBxKTptJFo+G6clLj8IFUJm\n+4ZBoLEze/MHZi0ltfB7QCq1UQniJ/9ieZBtYnvi8ov1zy3nhpFGm/mfLGjf\nBsa0/Y22Bw6wGlRo05bmlUcEFT0DOXgSmirsyREzVEAD8tUnD7eaag3CGNrV\nJuYf0USjoFhnIa0JhGcPjCL01LIqYYHKOTy6yUGfyH8mJVb8KotktjdDU3h/\nwkYZTz1cD3uziWmlLEWe/wg2JZYA8SLe2+DjxHNUrm2kGRWTbl12mLlC7MUf\npbeAttreNa3BY0S8uxCGp3DnYS7mEAWVCdMfGv7TL3k3Clirl2x4CNYXawu4\n500al1ZjhT45pu8602tzH+KBqUHXPl6k5J4gWoIsVDVBpWZrBte4oRAyEMVh\ne0EUMKVYCaszOc7gzoJG7cnjGyMZDZZr02h3tqq8j2Ho5Fp1EIIlF3BW3wAq\nKqrr+KsZFubXsUQTM38dF+/JQfuXZeB91BYpQITNZmMSkRQjOEwHU+LCbPmJ\nQfUC\r\n=CoLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGSDyQDJJsbSvWAukIfsyvYHxlYziX2hZhje+/8hJNG9AiAflhzh9cN2ecalLlOSS3Psp8Q6DQiNZMX3fEEc/ucwZQ=="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1626427098.0_1626427166354_0.033869042669538496"},"_hasShrinkwrap":false},"1.1.1-alpha.1626693085.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1626693085.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1626693085.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1626693085.0","@energyweb/exchange-irec":"1.0.3-alpha.1626693085.0","@energyweb/issuer":"3.2.1-alpha.1626693085.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1626693085.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1626693085.0","@energyweb/origin-backend":"10.0.2-alpha.1626693085.0","@energyweb/origin-backend-core":"8.0.2-alpha.1626693085.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1626693085.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1626693085.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1626693085.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1626693085.0","@energyweb/utils-general":"11.0.3-alpha.1626693085.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.0","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.0","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"8.2.3","@types/node":"14.17.5","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.2","supertest":"6.1.3","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"dabaac5fae99623b2f0d9411df82d8e025ce2ced","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1626693085.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-jByjuHQquzN6S1cQKBv+npppEus6EVuPeksFq/BNEikHeoXX0rPv7EyHsy/sa18kM32SAJZcgqVgRwOZ0IgRxg==","shasum":"e91c2b8280c5052f6a3c04debf1bd7a188cfe128","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1626693085.0.tgz","fileCount":95,"unpackedSize":152683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9V4bCRA9TVsSAnZWagAAKoMP/jhOQVX+P2zcxOSL1B3R\nRo/UF+2gLfdQUkln2BFHl0dpTwd7+6Z1+fta7Wi4ib+2bclilKYyOfHGeWOi\noCM8CQvnsvS2kOqXYvY89L0vYfNh+tfeTSLqDEWbihLtGs7+WEBvY3C4OShv\nr6JwQOn6BYF7aa55lLv4vwVPJ+FS25Xy2YkUQdOZzC5rw+vYTbUPs+W7PY81\ncYBQ1/CMktnF7Zky1+sDKdc6uDR1YrJHQuEdE5VZ85VsiVfVrRrqMIm/kjWx\nahlOyR55GO9puFCzPH9/qQyMuDTEcjsOoDHIDCG9dgLChDFfCshYN2Vpr+8j\n0WYWKOFpFMRxqdSQFXZGCse4pMFiHdukddKyyI2/0ZDAjSfXKCS4QZfizHOF\ni0bsbANRapgXO34edwVN9dDnAagBKxDe8zcG55L5ZNcWbSAbpOmrxmf6rP4R\njxnZx/s9djhnXC0r8fsX2IiPdpX8QrtbBaTFD5k9+Kh4Ssis3yd+yNIi8IQs\nKGqmOBZFm+zzxbbVIhRe9QFa0rclB42CG7CwcEQlKKKK0mzlF67CspQd4ORY\ncYQ7U9DHqI2BVx+No7thwvdVyAWe0XKVNzZj6Tf6egpyHGodOuSVFcAKJmSf\nHkR2UYFcFvXQierptRr5k4xJ22z2hAusrw7TIYBWuGBfvxbnDli4yP70lUVX\nacq1\r\n=1yWJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCpTwnoLegjhaiinavcw6sboUNQl54yHpONRs+p2GmJgIgNPO27rKAkyVEEJlGIS1JwR4/J638Xjh2oVZNn4iC3Ko="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1626693085.0_1626693147333_0.03969108805670252"},"_hasShrinkwrap":false},"1.1.1-alpha.1627918279.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1627918279.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1627918279.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1627918279.0","@energyweb/exchange-irec":"1.0.3-alpha.1627918279.0","@energyweb/issuer":"3.2.1-alpha.1627918279.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1627918279.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1627918279.0","@energyweb/origin-backend":"10.0.2-alpha.1627918279.0","@energyweb/origin-backend-core":"8.0.2-alpha.1627918279.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1627918279.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1627918279.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1627918279.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1627918279.0","@energyweb/utils-general":"11.0.3-alpha.1627918279.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.7","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.0.3","supertest":"6.1.4","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"97c3fe7d1a889153964dc4d86da35f6eb1bbc535","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1627918279.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-groSHe3ZFhAlko4z22Qp7ECW6ZU4PVUJ0S0EtzWszLD/KHkUO2Ernj12vm2aPLkyB6TH2xCSchkaogw3FSOt6A==","shasum":"0f2e10cd9569678bec2fda4db9698cca50b63861","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1627918279.0.tgz","fileCount":98,"unpackedSize":157658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCBC9CRA9TVsSAnZWagAAhegP/RDLWlZ3/FSCBbETibc8\nwZ9YidTkztKlfmI8Bl3wA+k4vh/8SflhyrJ4uu6q3MLUQ84pmwrIvSBMYJcY\nbUdwbMoxFHPidTXvYN/qcB8BF9bFAO2TTpZY8QmzJxoDf2R/2dhVW398wN7O\nuWgKXAIGpzAlxx2ITIyH9CrEyXHUEEghPYblZiCuatQi14yH5cz5vmGrtwAg\nHdM1xC23Yz7VjIRiwunqXopc8eKxiofBROAnMrDJubbwE3awkdsDIwQWgzdk\nop/8stYANlAjA8KDO/LoWHBpmSXziQc5KWtDuG2kfK61HzJDdwKfFI+u0imq\nUFDWOdeOZw/GQxitfU9keom9fHMYXlbznD5lb3Ex9/ohZ2L0TfR3YuFlq3F5\nER8gWqEHsbquhj/+MEVZcOUQWSRV5dzjnFi8f1SyppA3ctGh1+FIBFNCKV0F\n+pDLdm97hpE6PB01E/LUkSYGe9ulMmR4E1xlS0ri+QRlpZqZnlBk59a1QLwe\nTKEwL9aauexuRjfUBuvZvk9TX2ne6IWksw/SVqQc/XmYsarK47+jQlpDGQdo\neI+ruCu4FJMKHMdKo9gSykh4jS/RWAtLucy7ERdtJv5gKLCAsuJFDk/H9mKo\nwUXIHiutOBdyqgBglDbhA4vhk0awORp56fmgI1i4XCLKcg60WTCXiD3XFo6n\np5Q8\r\n=9oLA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPCdvIfLjALnqVTrKaWHS9NfKYBn540PJ8b9KtfHqGWQIhAOWkVRdCrSnWNWizw1sh0Z3rUsxBhD+pKwNjAxUnTYzB"}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1627918279.0_1627918525369_0.1044787492317647"},"_hasShrinkwrap":false},"1.1.1-alpha.1629812330.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1629812330.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1629812330.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1629812330.0","@energyweb/exchange-irec":"1.0.3-alpha.1629812330.0","@energyweb/issuer":"3.2.1-alpha.1629812330.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1629812330.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1629812330.0","@energyweb/origin-backend":"10.0.2-alpha.1629812330.0","@energyweb/origin-backend-core":"8.0.2-alpha.1629812330.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1629812330.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1629812330.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1629812330.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1629812330.0","@energyweb/utils-general":"11.0.3-alpha.1629812330.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.11","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.0","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"07e8e419e10003dba31830069ed565649e884810","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1629812330.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-jgZEybk5SnGaGLTJTE+rfI8tgG/VYEJaTRrj85J6urJ1+vbLxg1Nvk+83ZZYDCoMKG8HpJ6vSBitcdxzAr660Q==","shasum":"9ddf71e1fa5d445c18dcc70aa8a189899a861c6f","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1629812330.0.tgz","fileCount":98,"unpackedSize":157669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJPaWCRA9TVsSAnZWagAAw30QAIN5siQPAfa0QfJObCso\neWrE3LVjiCZb9v2m1U0uh2lRXi9v3FGBk1n8cuUH5qFsM9fVNwS8memgoY5s\nNcObNcH9IFXxRaMEPfxp/vY2o1Ba/R1yqzFO6gOjV3NgEAkcKBzw3a58UHBQ\nztxculQISeZcSIDc4izM3qm1akBnWEpIIunZBkAGqIy6WI4MdPcm6wrL6leO\nMjvoDj0aZJkpsVhlbLSWr0wtiyCcNKfIUSZUTZ+i51sVqqrXhVu0U25Jp/4h\nKAmjNMTeUqChPuLuIGQ9u18bvUR4a0LtJngo2E9hlyDgFPmuEN6IJ7kioJwg\ntn8B/RWTawrmf261HtODBcEJ5Oj0KI5pYz6z3W+MaUuGiT+5Spz6siYTbQij\nHiPOjh/m7zoatDtuDEZbQXaeoaJ2upHplDIp2dKfeG5IiTJtagdDeKHPT3Yk\nAMEt40nc31K8z2nf87i7kX0W9UMgbtmXLdOMyeNegzSPpP0SrhQTpqgD0ExX\nGjaofMSStJnvYBe9AGAof4Zqz/mYObl2CLhcd4HtsI2zwHVqHc5HpzIttRs+\nftfiraJ/kBI8Xxbn+Ect9IjeXViZqkXbDSZD0SiHV4KdHYNtF2Ni8FcMQ6Ym\nwLdZ84k/ILTzSWl6eB8NtehLMcHRtsgqJ5FUssMP6cnoFch0+LznVBaTIiuK\nDsec\r\n=HAaF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmb8nyWWBfsFRqJP2wNchPD4Gbk/gOCGOX+mbQUXX4twIhAK/bNkOqFRNLtiAkxSPgv51EWTOz/5jqasyJoH88Ieel"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1629812330.0_1629812374209_0.5238408808007076"},"_hasShrinkwrap":false},"1.1.1-alpha.1629978728.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1629978728.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1629978728.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1629978728.0","@energyweb/exchange-irec":"1.0.3-alpha.1629978728.0","@energyweb/issuer":"3.2.1-alpha.1629978728.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1629978728.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1629978728.0","@energyweb/origin-backend":"10.0.2-alpha.1629978728.0","@energyweb/origin-backend-core":"8.0.2-alpha.1629978728.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1629978728.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1629978728.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1629978728.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1629978728.0","@energyweb/utils-general":"11.0.3-alpha.1629978728.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.11","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.0","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"3b1e52d654d05ec183161a8312c0ab63885862f0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1629978728.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-ECfL0FY65Q4gYlrGtvONcA7CSsSXt/sIhgnFHFvzFJMIpSkcoCsghYBF4hL4r9yfHXxgBZn+Hoa8DHlzPjmKrQ==","shasum":"688ae12c467110663f9cf0d8ddc41adbdadf8830","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1629978728.0.tgz","fileCount":98,"unpackedSize":157669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ4CTCRA9TVsSAnZWagAA6KIQAJeNaY6b2O3PNKnscIYw\nyu1ZuTQnvY/j6LEXVnef+8XzwuneP39amG3MjQ9WTAGLKMYXZLV4icEq8pqc\nl3pBWVSqzvRo9QWPsyfDvLv1umjPy3Yc1lVie7LwM92vNo0UI6MDjtWaqcwA\nRXhtyuEv2Nc8daL9fkMZTtOtC5B42kyPV8G7jv15b0twdgCm9YIO1Ncl/tKe\n0+dO+0hp/DYzvuP+BeVoyxqUQgHV3lV4OCOc34W4856xjs7Y9fSlEPbXSJBs\ncgXQNgr0XJ4D5+JsG3xhhZIiaK6agVusLosJxMn5zmxmiTlU8APAg8wxao8x\nL3MZBkfR7Pvcxi0iQ+k4GMI8gyCp4gylgQcu4Hui7Bi2Eo5V8JNJk/n7iwKM\nsnLf+1eDxi/GXTshq5y7lCi5kAvYmmrhyi+AaoSjYo4riMFd4CUjdvy+jKj4\nj8ROgOkweelLEKNjjHTBCdj1i3kWtANwcA94ez+K+K1TOF2KTchSdS0mFnK9\nAnzWIuSNWjUnk5rce4ESVPYz0W1jDjmVhcTwlWseMIwDkPWE+Sr1E5AUGdcL\nhUjsrguu0aOCYeE+zBtM27AOaJ8IM5OPrjxrLLrzcqK+3Xlfy9nzn2StabCu\n0cAmcxaV7i6F4QjvRUTgTaHoZUHdFVGijqvM++XWSCR/gqA1+OumSMBon9UP\n4OWj\r\n=F3+U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFQCX9yRtnR8dzEoncN2vvPkWwmA+R+lMRR5L5uHjFKBAiBul+klgxIwJISF+68rvMNGiQNllnDRbcADPMVseXLM/g=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1629978728.0_1629978770998_0.913561782138282"},"_hasShrinkwrap":false},"1.1.1-alpha.1630314993.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.1.1-alpha.1630314993.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.9.1-alpha.1630314993.0","@energyweb/exchange-io-erc1888":"1.1.2-alpha.1630314993.0","@energyweb/exchange-irec":"1.0.3-alpha.1630314993.0","@energyweb/issuer":"3.2.1-alpha.1630314993.0","@energyweb/issuer-irec-api":"0.1.1-alpha.1630314993.0","@energyweb/issuer-irec-api-wrapper":"0.4.1-alpha.1630314993.0","@energyweb/origin-backend":"10.0.2-alpha.1630314993.0","@energyweb/origin-backend-core":"8.0.2-alpha.1630314993.0","@energyweb/origin-backend-utils":"1.5.2-alpha.1630314993.0","@energyweb/origin-device-registry-api":"0.1.1-alpha.1630314993.0","@energyweb/origin-device-registry-irec-local-api":"0.2.1-alpha.1630314993.0","@energyweb/origin-organization-irec-api":"1.4.1-alpha.1630314993.0","@energyweb/utils-general":"11.0.3-alpha.1630314993.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.11","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.0","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.3.5"},"gitHead":"8dce60771f57c6edfc63d4e2ef0d219c26b3c87b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.1.1-alpha.1630314993.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (linux)","dist":{"integrity":"sha512-jWgNmTuC2wP+UmlhArM0/CnIrIkbnbYcrC8/EN8a39O5M2JkO+MIND4VDvOaO4s0mOfpwQQkw5sxKCOJUj7nMA==","shasum":"26bc935774415e635bbf79290aebf30dfe78ec0e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.1.1-alpha.1630314993.0.tgz","fileCount":98,"unpackedSize":157669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLKIfCRA9TVsSAnZWagAAsR8P/iNpwIwumMHayvVpUMDy\nY5hLpJUowxCQ3uUyxDK1XgC5wEcZ+722ZZr1gKGKmlooTEuGKSgI1guyqU5J\nFwnVA6GIOYmms1TlZKAynrvrkrrQqOGT3o9PpCojCE0lNdqcWpG3s3qLqfow\nmbydAVbUlnvviehpSbWhHiURV3BUVLAaSFKwDM5GR/g+nwyO1eyFY07/n4r0\nY7D2JdHxq3t7pM4osULs+AHJE/Zwocwgo7fW1XffUcxl6L0vGmmV3IIV4WrN\ng7fmv25YoSGDScZKSLbwtJgy6S9FjMhdQkMqQipf6XJB2YUegm5gp4JD1jIk\nuLzlyyoiuqF2fhYO8ANUu5fpDk0vzxOr8B8/CdNXNi8SnkvrXDlT5DP/4D6t\nc9HqVVedSproKMEfsmhvj4FPPwAA7nWCMxNT/3sCzicJp7U9bsAUUuiAhkKW\nwQXhM9dLuI22kG8DTC0OYplx9VFIcL/42gdXPjNhTgO5FfmBTfK4bmNfniRo\nuvUjU7yzBbrFoUK4RaeV47Su8W5Feu4mM0ciBBGGKZJ3PpSUPv4qWhOhh/1l\n+RUrBBwQxaqs2ACSAnOABhyIn1KnbngLrRrm9xtXcObu3yXIn7NdwPoqFWs0\nyC/RUqHXnxtzcuHE+Q1+/geMumeHne6kZMBJNA8kqEPbfyi4ueoG3ke9rzwD\n9+ah\r\n=DjFa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHN/exDRluj6ZcEzoDEMmdFZ3yKarTceb1U7Nykf3lFmAiAkQCVv299AEiIkoOeorQUztBQEpB054aIfL4hN2tqoRA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.1.1-alpha.1630314993.0_1630315039674_0.925022739162473"},"_hasShrinkwrap":false},"1.2.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.2.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.10.0","@energyweb/exchange-io-erc1888":"1.2.0","@energyweb/exchange-irec":"1.0.3","@energyweb/issuer":"4.0.0","@energyweb/issuer-irec-api":"0.2.0","@energyweb/issuer-irec-api-wrapper":"0.5.0","@energyweb/origin-backend":"11.0.0","@energyweb/origin-backend-core":"8.0.2","@energyweb/origin-backend-utils":"1.6.0","@energyweb/origin-device-registry-api":"0.2.0","@energyweb/origin-device-registry-irec-local-api":"0.3.0","@energyweb/origin-organization-irec-api":"1.5.0","@energyweb/utils-general":"11.0.3","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.12","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.1","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.2"},"gitHead":"85535e1d733ff086bba0778374bf61954443aecb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.2.0","_nodeVersion":"14.17.5","_npmVersion":"lerna/4.0.0/node@v14.17.5+x64 (linux)","dist":{"integrity":"sha512-CuWvu6PUESHJ4anRC6LX4dQBQNbVldx9TSqOc/Rm2njoN8WJj3jRSruDIw7TXgtXCVGyOQuYPKmW9VBfyR6O9g==","shasum":"571d2ed3d3970602e3669f2cd32ec1a9c7013661","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.2.0.tgz","fileCount":97,"unpackedSize":154358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLKnxCRA9TVsSAnZWagAA0cYP/08sssZbq7chSLCzN3ms\ntK4sqsP+ojU8e7OmQHpDUbvuY7qFAzdoYgAIXLIlR+Qh4oGYcaWfMCCz27Fr\nAjzrdO1QKbIHfMSg8uNq4pGm+5oPEDriWyaGSuQSKtzR+sz690du5Lhf5sZg\nsSiGOFKo5CVP26GqRPnt6XeShWONeSRK9+GVt8lye2vcJJHh9vBT6WqcF2RY\npqFuCvlbN2kJ+qHuEN8J2/1goa/ecFR2wefj6OSIpn+w5/at3/K3u8i8FtAO\noV/TS7muVTllXFJbfRx4VKZhHBbNPaKCyZjqyauJzkvRvnb+83vxgJtXvt60\nIB2jNhLrbqUyR6lv5a93f+5svSQVWrNlMaSVwv/LhKmW/yYd9twYyII53FEt\n3L1lR9lT7Ev9/2GuKrnfpPgpIwOc8pxk/LlJ6za8UfeX/rd6wDMrssTsT/NT\nFTpmNKbFDQhw+MMY6QF6vpwZeccIEC4d7LItoKKomZ8LKL50+5shCotD9xi4\n9EKo1IcmoLQ1iEeA5BVUHtCM1CK0TTiI8rHDMTd1+JxZOU4Rq2ZvRtya7cmq\nQdG8Vvps7KpQLTo7T9wDwIqeJPVtlFN5WYOPuK1+RrWREBawFzNMbedyCNf0\ntc+qgFljJL3QfZqME/S1dGH7N44yndjRPlIWmAGGzNJZwLMzPoJTs7No+77/\nbrB/\r\n=Pt47\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsXscCv11eXoo1w3ghpDvAbNYnqHC/Fv97lV+WKg70ZgIhAO0IuxApkRzRVZFgBJzLS8o12FpPfwYEuMOduG0r9FI0"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.2.0_1630317040927_0.023147259658149455"},"_hasShrinkwrap":false},"1.2.1-alpha.1631706872.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.2.1-alpha.1631706872.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.10.1-alpha.1631706872.0","@energyweb/exchange-io-erc1888":"1.2.1-alpha.1631706872.0","@energyweb/exchange-irec":"1.0.4-alpha.1631706872.0","@energyweb/issuer":"4.0.1-alpha.1631706872.0","@energyweb/issuer-irec-api":"0.2.1-alpha.1631706872.0","@energyweb/issuer-irec-api-wrapper":"0.5.1-alpha.1631706872.0","@energyweb/origin-backend":"11.0.1-alpha.1631706872.0","@energyweb/origin-backend-core":"8.0.3-alpha.1631706872.0","@energyweb/origin-backend-utils":"1.6.1-alpha.1631706872.0","@energyweb/origin-device-registry-api":"0.2.1-alpha.1631706872.0","@energyweb/origin-device-registry-irec-local-api":"0.3.1-alpha.1631706872.0","@energyweb/origin-energy-api":"1.0.4-alpha.1631706872.0","@energyweb/origin-organization-irec-api":"1.5.1-alpha.1631706872.0","@energyweb/utils-general":"11.0.4-alpha.1631706872.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.15","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.1","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.3"},"gitHead":"7cff966958a6bed7926776c5d87ddc2dff7aeaf3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.2.1-alpha.1631706872.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-5h9/dGulp+LWcp9YOrJZ7Hr+8OH16m+7zipHYVNbYBnVH0HsBaTE5LYhTAZSn3bF0DZfGpjgNCSwIvUXxHO2PA==","shasum":"410e9f91aef48254dcc037ea35571170cab86ce7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.2.1-alpha.1631706872.0.tgz","fileCount":98,"unpackedSize":180036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQd83CRA9TVsSAnZWagAAivwP/2DphUTQYvkiivBJES2s\n76zvbHmbIrV4miMWMke9qs07c1RlfO+KmJR++/CZIRo47ZQSW5INMMXQRUVg\nF4YYCNOB9WpE1mv2VbiEsjRKCj4/MXKmqw3TMYCJ2KKk+zO0C8u7/jMBPLF0\nmmTIKktbhMIWy1bLVDh+OhgvZ+xHRqL+pHsvbh8f83eEQlV4XLyXoko7rFtI\nlCLc9axYQlUqNUg6V4Dx1M8HndgQfgLkpniW9yaE9vB+IRRKsrVDUbTb4DUg\neTAvWHVMLy/13cuJ11LU4wqIXVVXbm+rcDWyJfHTVfMslQpgMNByr30IoyxQ\nIIajwNDO5QPxhT/OOwCDSCGhub8s3R0n1aoNB3MWDEQQrdVqnyYJlAYdq05K\nxdNmv0IRjVXlv0i83B73VUl4qy3o0kuwRXtmjjWwLLVC5z1CS/Kf/hZZivYC\n1u2qyLyyiqtiPBOwlFjGCYeCZHK06NV83MrF/vQjwyEnMtNe9YVYWhI07MdC\nrXuegUwJkX4sZXoUk0xDlKVsuQ0Afgx8yRrU9Yu7rF7qN8InObGzq2Uo6Cm7\nNZhRgN0ljEUMGgp5Hdg0ZOUQYuKy9NlD3NyRF+LH7Zj3aNHkb33it9tycR8g\noV1G2PrOy+ObmzBjWbqKTXtBaLZqjrW/ob9la/h40CVxdp6P+TlJu0b1D7de\nyVIp\r\n=Mejw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtx0voOIqn8Ye0ElWVrinfHqSJKVV2+8Sna/ILUtD3RwIgBCW1TuHID1twHohVO2xhwctkWqPpqQp7Pl6RYuevc/Y="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.2.1-alpha.1631706872.0_1631706935160_0.7108633915771647"},"_hasShrinkwrap":false},"1.3.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.0","@energyweb/exchange-io-erc1888":"1.2.1","@energyweb/exchange-irec":"1.0.4","@energyweb/issuer":"4.1.0","@energyweb/issuer-irec-api":"0.3.0","@energyweb/issuer-irec-api-wrapper":"0.6.0","@energyweb/origin-backend":"11.0.1","@energyweb/origin-backend-core":"8.0.3","@energyweb/origin-backend-utils":"1.6.1","@energyweb/origin-device-registry-api":"0.2.1","@energyweb/origin-device-registry-irec-local-api":"0.4.0","@energyweb/origin-energy-api":"1.0.4","@energyweb/origin-organization-irec-api":"1.6.0","@energyweb/utils-general":"11.0.4","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.15","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.1","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.3"},"gitHead":"df8152a7699f111892af333fdfca4fb75d063499","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.3.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-2XOa9c1QhUPdzNACgfEsmWP2boRHvcOMhDkIHHQx18S59YFWqNq6anYJWSI8bhBQiR1M+VB03O92FlQuqaWqbw==","shasum":"ce639cfdf57d1df9fb34f5405851b7ac45ce0c4c","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.0.tgz","fileCount":97,"unpackedSize":171205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhRGHdCRA9TVsSAnZWagAA7C0QAIGFF3guLQOw3mbhYolj\ncn31HXD9/NU+zTbV74ZiIn0K4j/yaFCo4ld0VP1xFsQwMxdpCiZcVI6Lt8GF\nmxm7xG0wh4+il4Yp1LmVNzCGhEK4kH/5Rt7xtbCwA/RTfVnPsUterQ3smLdt\ns2HBnPbBbNyKMUQp8diEwXj+ZUaPODb2btKEIMn+WoywQykH3eeZd/pxtP6l\nKEv/2YhDSUA1UMMVsMMWx9E7w1I5iLV9Dtml3FOYA1WhnNWHp2Tjwjb3GGa+\nwZmMlUnXP8KFeTqt4hfvCNQwaY7Qkfvb4rsmJNgSKqMWdIeQAo4TqZHvavzF\nSryY7Py46g9wLPNNui6YCtqeKUcbLhZguEODHsijompdVyJOh5bLLzz05Nkc\n7XLs/JzVl0B1K2thFObJGHFsY0q8j+gh9fUh7QHRmpW71I4h1zZP/Y+4wuCr\nGTkpG9YGjHhv7k86oRLSJ+FaMorYVfDxxVp2TEZZCOkef1mbfB1Zynb8hxRc\nlPT6sBcjtrbiAHZg0+Bles9/dzgncHshdEKVb4HU7WBqrYZQwTgqsELdq21Y\nBUh9KwFvqhytr+VYoLR2QM3AoNmnQJHw7WdPUhVjre/khkex6nkKftGXgnUD\ndKI1Rvh+c2JP+Ni6T/XbS4vT1RyNam6TqkWSuGOGZc5dR0ihpUIYg30VcJnZ\ne6gc\r\n=baZx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDteYiu4GWXAZR3q7Sb14pN6MIJeBTalYlVAoWuyqLVEAiBNZaeq5PSCRs8dZ7OR+cwVyuiO6wVlHALUuir/xICsgA=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.0_1631871453605_0.9836524599361409"},"_hasShrinkwrap":false},"1.3.1-alpha.1631878057.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1631878057.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1631878057.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1631878057.0","@energyweb/exchange-irec":"1.0.5-alpha.1631878057.0","@energyweb/issuer":"4.1.1-alpha.1631878057.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1631878057.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1631878057.0","@energyweb/origin-backend":"11.0.2-alpha.1631878057.0","@energyweb/origin-backend-core":"8.0.4-alpha.1631878057.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1631878057.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1631878057.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1631878057.0","@energyweb/origin-energy-api":"1.0.5-alpha.1631878057.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1631878057.0","@energyweb/utils-general":"11.0.5-alpha.1631878057.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.15","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.1","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.3"},"gitHead":"e85b8f088805e9a37d6a3cb5eb74bdb7c4533bd0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1631878057.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-xbxsxjN3MtSbM4eexlc4is0j/UtR4Qef579win4g9vYf643v20EJlnu+KqVxgewKsQMOBuMUxlrW7fWscRtzsw==","shasum":"0305cc267b76d149b6adc006d9df5e82ded523fb","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1631878057.0.tgz","fileCount":98,"unpackedSize":180592,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiMs1eR73VKhltvpfTbMnfSZZmJHEAWsiff33Ynu/wcQIgPGu6jFilPC265P2W3YqhKLummXDxtWY1Hs3QUx3O5b8="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1631878057.0_1631878137378_0.27569088697234245"},"_hasShrinkwrap":false},"1.3.1-alpha.1632573029.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1632573029.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1632573029.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1632573029.0","@energyweb/exchange-irec":"1.0.5-alpha.1632573029.0","@energyweb/issuer":"4.1.1-alpha.1632573029.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1632573029.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1632573029.0","@energyweb/origin-backend":"11.0.2-alpha.1632573029.0","@energyweb/origin-backend-core":"8.0.4-alpha.1632573029.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1632573029.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1632573029.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1632573029.0","@energyweb/origin-energy-api":"1.0.5-alpha.1632573029.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1632573029.0","@energyweb/utils-general":"11.0.5-alpha.1632573029.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.1","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.18","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.2","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.3"},"gitHead":"b17ba52a7c6c0038dc4d4c26cb0a51cbb60866ae","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1632573029.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-dsiA+R+puF08bICj/QPdKI5oPQlNNDxWEdi0XHO/v+ze4YF/LMlGPTbpW0+N9Und8Aky52JgqkDsv9vzosvCNA==","shasum":"501bd3402bb518ae8a28f3faafeaee914be8fa30","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1632573029.0.tgz","fileCount":101,"unpackedSize":184786,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICMP82GuHfoMyR1jWlYHi3zjrvR58TO5JE4Zt3a7O/RyAiAcgEKzLzBO79bYsWH56PCGz+nThrJx6VsQr9lY57qolQ=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1632573029.0_1632573067653_0.4083431257108887"},"_hasShrinkwrap":false},"1.3.1-alpha.1634225870.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1634225870.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1634225870.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1634225870.0","@energyweb/exchange-irec":"1.0.5-alpha.1634225870.0","@energyweb/issuer":"4.1.1-alpha.1634225870.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1634225870.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1634225870.0","@energyweb/origin-backend":"11.0.2-alpha.1634225870.0","@energyweb/origin-backend-core":"8.0.4-alpha.1634225870.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1634225870.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1634225870.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1634225870.0","@energyweb/origin-energy-api":"1.0.5-alpha.1634225870.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1634225870.0","@energyweb/utils-general":"11.0.5-alpha.1634225870.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.2","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.21","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.2","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.3"},"gitHead":"3e80a94f0bdd8aca92e30e2bb258262ee5e4ea0b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1634225870.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-wox1U0OKP5STIdiLZ8nZ038fjFUW9qdCQEbDuUIEGAbbpF46ujZyY9FwY5fTIn1RJ1dXiEoEuJFvEuOAt/trOA==","shasum":"97acdf23107d28b1fa402721302d48fa62cdc909","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1634225870.0.tgz","fileCount":101,"unpackedSize":183563,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMajhaUMLZET+u6IUp8vF/98MZjN4NW6SU8hMr7vmf0QIhAOPVu3kD/TN1Q6tAcZBOED+slqPD7ToUHr/1rOkQKopQ"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1634225870.0_1634225915884_0.20078006650116387"},"_hasShrinkwrap":false},"1.3.1-alpha.1634310900.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1634310900.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1634310900.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1634310900.0","@energyweb/exchange-irec":"1.0.5-alpha.1634310900.0","@energyweb/issuer":"4.1.1-alpha.1634310900.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1634310900.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1634310900.0","@energyweb/origin-backend":"11.0.2-alpha.1634310900.0","@energyweb/origin-backend-core":"8.0.4-alpha.1634310900.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1634310900.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1634310900.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1634310900.0","@energyweb/origin-energy-api":"1.0.5-alpha.1634310900.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1634310900.0","@energyweb/utils-general":"11.0.5-alpha.1634310900.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.2","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.21","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.2","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.3"},"gitHead":"3e80a94f0bdd8aca92e30e2bb258262ee5e4ea0b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1634310900.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/3.22.1/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-27qzAfD211RpjHgjgC88zr7Bt5ItkIH0cPsvx82R//ENZkGJYCSuj0hbcnhMuzyk8qTzHlj1cDv7X6GV1cHIJQ==","shasum":"a0bc0d4f6ffaee0099d51033697fda42908ca90b","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1634310900.0.tgz","fileCount":101,"unpackedSize":183563,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1kH4X8AEE2ygGxyiCvkD2JlypyCAWQPwF+7/SSYenEAiA7WpyGdxPdUXrWD2gXKDcpChkdD/5f0QYLpwNVUezAbw=="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1634310900.0_1634310992192_0.1497573612224039"},"_hasShrinkwrap":false},"1.3.1-alpha.1634635079.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1634635079.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1634635079.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1634635079.0","@energyweb/exchange-irec":"1.0.5-alpha.1634635079.0","@energyweb/issuer":"4.1.1-alpha.1634635079.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1634635079.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1634635079.0","@energyweb/origin-backend":"11.0.2-alpha.1634635079.0","@energyweb/origin-backend-core":"8.0.4-alpha.1634635079.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1634635079.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1634635079.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1634635079.0","@energyweb/origin-energy-api":"1.0.5-alpha.1634635079.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1634635079.0","@energyweb/utils-general":"11.0.5-alpha.1634635079.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"7.6.18","@nestjs/config":"1.0.2","@nestjs/core":"7.6.18","@nestjs/cqrs":"7.0.1","@nestjs/passport":"7.1.6","@nestjs/schedule":"1.0.1","@nestjs/swagger":"4.8.2","@nestjs/typeorm":"7.1.5","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"7.6.18","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.27","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"d8e2f0328e9ab3ea3a04d41c8939b225c931a703","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1634635079.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-K0GkeTrpUzUxMG0+cxlTzYCrqOi4TwgDzopaHTuHewj4NmgX7Pv+SeVpdE7HuaCmKylSX6olS5SSCmEqZrzK1Q==","shasum":"f9fb6b11ff51c7b3c5a36e7ee53bd85c23210141","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1634635079.0.tgz","fileCount":101,"unpackedSize":183563,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbm5q/GuwVb6zuRUQXVSzrqR39pLk/OacXSKZB+2V8OgIgZBeuLvnJmhm3AfphwIrN55JdWcAlRlPDtPofJoTnFM8="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1634635079.0_1634635116212_0.9950138320230846"},"_hasShrinkwrap":false},"1.3.1-alpha.1634803278.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1634803278.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1634803278.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1634803278.0","@energyweb/exchange-irec":"1.0.5-alpha.1634803278.0","@energyweb/issuer":"4.1.1-alpha.1634803278.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1634803278.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1634803278.0","@energyweb/origin-backend":"11.0.2-alpha.1634803278.0","@energyweb/origin-backend-core":"8.0.4-alpha.1634803278.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1634803278.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1634803278.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1634803278.0","@energyweb/origin-energy-api":"1.0.5-alpha.1634803278.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1634803278.0","@energyweb/utils-general":"11.0.5-alpha.1634803278.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.1","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.27","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"604c5709137f33acf29f5981bcbb4f459cdcf16e","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1634803278.0","_nodeVersion":"14.15.5","_npmVersion":"lerna/3.22.1/node@v14.15.5+x64 (darwin)","dist":{"integrity":"sha512-0dJDvEW/KhRIT+iH4NrCPQmvL2sjkYVvVIP+bRgPg6lO8t3PCNBPlv2DAtG8Y0ugDFh/p7H4FJvL7KlFO6qhbw==","shasum":"2fba583d3854d92e14682bc9510b2126a47df623","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1634803278.0.tgz","fileCount":101,"unpackedSize":183560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuPPdkzgic05Tp/nynZu5oPZfGHq+ug23tCMvcblzRtgIgA94LOPYt5Nt6Y+mlHdaUN4xauJfEcAHP+Kegj4/jGM0="}]},"_npmUser":{"name":"bagaric","email":"bagaricjos@gmail.com"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1634803278.0_1634803489235_0.14987509826693768"},"_hasShrinkwrap":false},"1.3.1-alpha.1635152195.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635152195.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635152195.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635152195.0","@energyweb/exchange-irec":"1.0.5-alpha.1635152195.0","@energyweb/issuer":"4.1.1-alpha.1635152195.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635152195.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635152195.0","@energyweb/origin-backend":"11.0.2-alpha.1635152195.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635152195.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635152195.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635152195.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635152195.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635152195.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635152195.0","@energyweb/utils-general":"11.0.5-alpha.1635152195.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.29","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"80a9e3deee0c6b842dbaf7f9bd62b0d4f7a0dff9","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635152195.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-T1OHZrRDSX63L/8chVoaii06qzwDTW1fcx2Ry1JpGJIMCcrrHa/H/yVkguihc5qWxIdbv2W2x3L+FnEoBl7K9w==","shasum":"f142f68b3f3cd11db5bd150df0e4196ba8c3204f","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635152195.0.tgz","fileCount":101,"unpackedSize":183560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjMUzhoIUhIYyyL6wE4ErksbUcg+LerObdJKlDYpN+NwIhAPtY0yTO21HLfEj65WT1MC5Mz8CKBwMP4hfkjJcYVCsF"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635152195.0_1635152236185_0.13264059634439973"},"_hasShrinkwrap":false},"1.3.1-alpha.1635237487.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635237487.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635237487.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635237487.0","@energyweb/exchange-irec":"1.0.5-alpha.1635237487.0","@energyweb/issuer":"4.1.1-alpha.1635237487.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635237487.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635237487.0","@energyweb/origin-backend":"11.0.2-alpha.1635237487.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635237487.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635237487.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635237487.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635237487.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635237487.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635237487.0","@energyweb/utils-general":"11.0.5-alpha.1635237487.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.29","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"1ff92e7297ff0bcdb54704b327f1e3d719e9e029","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635237487.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-RSQ/25vukrAS9dy+Mw76+VKJqrZ0ghJCmcJLgcI7jApoA2shiEkfpoyPJBP3SLs4VEuR1uCp0iokpAr2KwF36A==","shasum":"e7746d3792510102e92f3fa837b4ae58953867fa","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635237487.0.tgz","fileCount":101,"unpackedSize":183560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvtanvcyn3HWP81SFCssJGP5i7UTwQE1/dUMYjNTrK0AiEAkCNT9ecBja0NFK9bgmCsnm9AXJs32zet3h1o4TnRjGI="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635237487.0_1635237530435_0.9170427968438344"},"_hasShrinkwrap":false},"1.3.1-alpha.1635238834.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635238834.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635238834.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635238834.0","@energyweb/exchange-irec":"1.0.5-alpha.1635238834.0","@energyweb/issuer":"4.1.1-alpha.1635238834.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635238834.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635238834.0","@energyweb/origin-backend":"11.0.2-alpha.1635238834.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635238834.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635238834.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635238834.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635238834.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635238834.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635238834.0","@energyweb/utils-general":"11.0.5-alpha.1635238834.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.29","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"f52f536aec4490e8a4f6e78726ca07ec660be4d2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635238834.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-reRLuaD+ZXO6uR7ymI7t2wAkM5bM2WOSXuD3mI8JQx52Y+PL3q4NjRT0ns2rNEMvItqfYscyx0E14SPgEhQwJA==","shasum":"ed2c936cee7f558bd58fe0edca2e034ed2981e9f","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635238834.0.tgz","fileCount":101,"unpackedSize":183560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDY4WK1Iz2sZ+XmmKNJfRLGZVf4zmyaCtGoEqcukbdhhAiBcC4ISarGxdUBYTfdrlZrcMq/Hndhk9D6oLfHQt5RSPg=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635238834.0_1635238882836_0.28824902523166207"},"_hasShrinkwrap":false},"1.3.1-alpha.1635328054.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635328054.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635328054.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635328054.0","@energyweb/exchange-irec":"1.0.5-alpha.1635328054.0","@energyweb/issuer":"4.1.1-alpha.1635328054.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635328054.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635328054.0","@energyweb/origin-backend":"11.0.2-alpha.1635328054.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635328054.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635328054.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635328054.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635328054.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635328054.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635328054.0","@energyweb/utils-general":"11.0.5-alpha.1635328054.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.29","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"4a856508b921081960498a8009b7a165481c6ceb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635328054.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-OkmI9FlIfzhw3iRVUOEmlXEwf41TSCruo+8LsGJYg9qWzaLxPvnb6tOHDBpwDPOccgm1WDdw/h24A6Wjrxazfg==","shasum":"2400ebf16b344cf2635c5f0318248b4b6b485382","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635328054.0.tgz","fileCount":101,"unpackedSize":183459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHZ05Sj8QOKPLX0tZ73rrN4Eh4A3AV4UQozHHWRlae3QIgRn4PHM6CYNnTatZztSf52YyoqHDMavQE7uTlFAKhVpw="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635328054.0_1635328111214_0.7527108665935214"},"_hasShrinkwrap":false},"1.3.1-alpha.1635420812.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635420812.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635420812.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635420812.0","@energyweb/exchange-irec":"1.0.5-alpha.1635420812.0","@energyweb/issuer":"4.1.1-alpha.1635420812.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635420812.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635420812.0","@energyweb/origin-backend":"11.0.2-alpha.1635420812.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635420812.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635420812.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635420812.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635420812.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635420812.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635420812.0","@energyweb/utils-general":"11.0.5-alpha.1635420812.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.29","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"f616665f45b645333d4b1754f6adc93a1d0d74cf","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635420812.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-OnOShH2a4fnzKQjOAVho5/npWwvrpUbpeS63Tzfd+8YgpUphCFSutUSWgryGbM81lWwPTVWovID0pHOL58ASlg==","shasum":"ff6b293c1397462c288db44e4b711ec87f3168c5","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635420812.0.tgz","fileCount":101,"unpackedSize":183459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL+C4diBPb7GcYLW7iPv/4XYRYelX2dcKLd5YqtyBXGwIga9uo/6+qIWOgngVJMDZD5paqkWWVoTrLYc1ObVM0694="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635420812.0_1635420858516_0.2400985826799309"},"_hasShrinkwrap":false},"1.3.1-alpha.1635843269.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635843269.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635843269.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635843269.0","@energyweb/exchange-irec":"1.0.5-alpha.1635843269.0","@energyweb/issuer":"4.1.1-alpha.1635843269.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635843269.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635843269.0","@energyweb/origin-backend":"11.0.2-alpha.1635843269.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635843269.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635843269.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635843269.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635843269.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635843269.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635843269.0","@energyweb/utils-general":"11.0.5-alpha.1635843269.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.32","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"342e0eb0424db8295af9e4feb67555076c5e84e3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635843269.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-mOnQVqeyQEfAsX/5SRkXNkQbHRzaMwqeZTJ0m6T/ba9EkF5E5E5/1xoHwjXoTEX1BvZunbKTbOjnStnPGXIURw==","shasum":"1957fdbe3addaa071872a43c56d49d5200fc2143","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635843269.0.tgz","fileCount":101,"unpackedSize":183459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRb1o1ZxV8VnpdRy+hbyX1dnMXjUZFGvvUDNR4gs9PUAiEAglDMI03i+a/8tjIqorzMnjW+k9pf6yCyXm+GymteACs="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635843269.0_1635843306548_0.5880757879937848"},"_hasShrinkwrap":false},"1.3.1-alpha.1635844951.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1635844951.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1635844951.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1635844951.0","@energyweb/exchange-irec":"1.0.5-alpha.1635844951.0","@energyweb/issuer":"4.1.1-alpha.1635844951.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1635844951.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1635844951.0","@energyweb/origin-backend":"11.0.2-alpha.1635844951.0","@energyweb/origin-backend-core":"8.0.4-alpha.1635844951.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1635844951.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1635844951.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1635844951.0","@energyweb/origin-energy-api":"1.0.5-alpha.1635844951.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1635844951.0","@energyweb/utils-general":"11.0.5-alpha.1635844951.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/schedule":"1.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.34"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.32","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"e93213bc93da8e95563f79d75c84d4daab980989","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1635844951.0","_nodeVersion":"14.17.4","_npmVersion":"lerna/4.0.0/node@v14.17.4+arm64 (darwin)","dist":{"integrity":"sha512-7L7JgOYWKWcLPL9b60J1Smij5TEOYvyKXqmB+3rJ9webL/aSRPqkzL6fe+0vTAzCfDy2LbIZE1urYAac3FP67w==","shasum":"a756c57eee0fc0216d6ad2bb2dde10be0117dd44","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1635844951.0.tgz","fileCount":94,"unpackedSize":170121,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFDkUs4rq7RvK+28uM3/ssI4f5/L4q2OtxUMFlb/qo9LAiEA9PnIVJL2bfLd00ekE2WwPxtO8fQiExarOS3brkoCuZQ="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1635844951.0_1635845007810_0.16279189285031137"},"_hasShrinkwrap":false},"1.3.1-alpha.1636106793.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1636106793.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1636106793.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1636106793.0","@energyweb/exchange-irec":"1.0.5-alpha.1636106793.0","@energyweb/issuer":"4.1.1-alpha.1636106793.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1636106793.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1636106793.0","@energyweb/origin-backend":"11.0.2-alpha.1636106793.0","@energyweb/origin-backend-core":"8.0.4-alpha.1636106793.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1636106793.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1636106793.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1636106793.0","@energyweb/origin-energy-api":"1.0.5-alpha.1636106793.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1636106793.0","@energyweb/utils-general":"11.0.5-alpha.1636106793.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.38"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.32","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"c91e9b22bd3afaf033be5f10a31fe53f6ff48fad","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1636106793.0","_nodeVersion":"14.17.4","_npmVersion":"lerna/4.0.0/node@v14.17.4+arm64 (darwin)","dist":{"integrity":"sha512-qvhXvm0UY/EZDsVKnuPwMIMKgTUS6OsjkLIYQ7gdqt0PJ75OlW2uVu2hRxQ3rQdnfuydM+0TpkAU8rg8r8tQTA==","shasum":"6f7265c0b1313e116659308c8419ee5d62e929a1","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1636106793.0.tgz","fileCount":142,"unpackedSize":257517,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYDuK5bLCq4b7kPch2DOWVtaqCs981jIvN4vmJi4vLAQIgWHIdD0KHrLxAE6LNUGaLcBFDhfvvScMCbufWpw8WdwI="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1636106793.0_1636106833931_0.9899093124146396"},"_hasShrinkwrap":false},"1.3.1-alpha.1636552048.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1636552048.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1636552048.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1636552048.0","@energyweb/exchange-irec":"1.0.5-alpha.1636552048.0","@energyweb/issuer":"4.1.1-alpha.1636552048.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1636552048.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1636552048.0","@energyweb/origin-backend":"11.0.2-alpha.1636552048.0","@energyweb/origin-backend-core":"8.0.4-alpha.1636552048.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1636552048.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1636552048.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1636552048.0","@energyweb/origin-energy-api":"1.0.5-alpha.1636552048.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1636552048.0","@energyweb/utils-general":"11.0.5-alpha.1636552048.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.39"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.32","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"f4ac1d75c27bf4f9cbaaa34754bbd5de81020c0b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1636552048.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-Qz8R/TjmXhkgCG2yqOpFabNNNbS1szxzYS9hrZkgs6Vti29UXYHMeccjKuqWPF/mf9x6/7QpEWVpBbv8gqQ2wQ==","shasum":"25d5819f3518012e2062a14c8f050fffb582d258","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1636552048.0.tgz","fileCount":149,"unpackedSize":270855,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcqwb+5kMQQ0cZiQ/Xiqi7I2DagoI/P8KE58DnFgRXdAIgDEVQOl7/MI56wq3Z5dTsApoJE1aRFQvxepKU8KOhJZE="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1636552048.0_1636552093690_0.9054131260393259"},"_hasShrinkwrap":false},"1.3.1-alpha.1636615994.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1636615994.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1636615994.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1636615994.0","@energyweb/exchange-irec":"1.0.5-alpha.1636615994.0","@energyweb/issuer":"4.1.1-alpha.1636615994.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1636615994.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1636615994.0","@energyweb/origin-backend":"11.0.2-alpha.1636615994.0","@energyweb/origin-backend-core":"8.0.4-alpha.1636615994.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1636615994.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1636615994.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1636615994.0","@energyweb/origin-energy-api":"1.0.5-alpha.1636615994.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1636615994.0","@energyweb/utils-general":"11.0.5-alpha.1636615994.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.1","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.39"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.32","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.4.4"},"gitHead":"978078fa3590071f451e88d8ba2b84e8eae3c9bb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1636615994.0","_nodeVersion":"14.17.4","_npmVersion":"lerna/4.0.0/node@v14.17.4+arm64 (darwin)","dist":{"integrity":"sha512-r4CQvIXITJM/cka+6ctmIRDlUu4fMHYKzVHReDKD29TbuoHBiWm9QGW2Zcui8Dw7zd205QfId3gxJSBWAuCCvA==","shasum":"74242852411b5779e9ace9b9997aa474df1e4a95","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1636615994.0.tgz","fileCount":142,"unpackedSize":257517,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnwpIy2tmm1rr5SvDMluWLzl5Xy5iTEStW/eNxNJLN4AiAJme7TuJ5VJGcG5y5HCl9ydq235hcZZDYUKN8v6Cup9w=="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1636615994.0_1636616034741_0.025929178876470838"},"_hasShrinkwrap":false},"1.3.1-alpha.1637838431.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1637838431.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1637838431.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1637838431.0","@energyweb/exchange-irec":"1.0.5-alpha.1637838431.0","@energyweb/issuer":"4.1.1-alpha.1637838431.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1637838431.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1637838431.0","@energyweb/origin-backend":"11.0.2-alpha.1637838431.0","@energyweb/origin-backend-core":"8.0.4-alpha.1637838431.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1637838431.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1637838431.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1637838431.0","@energyweb/origin-energy-api":"1.0.5-alpha.1637838431.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1637838431.0","@energyweb/utils-general":"11.0.5-alpha.1637838431.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.34","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.2"},"gitHead":"78e48a78d9bb7f0bff508f901793e35ef366c901","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1637838431.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-OHfhureHGWiQCZDR2xTd4iMXyCve5XXLxJ+lrI4gFLXYMGINobl8PkxntIGDeVo3az5B0lcgvaqCq949gpQENg==","shasum":"4ac099975286ca1210eae69d7851b345afccd7b7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1637838431.0.tgz","fileCount":89,"unpackedSize":183067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn27eCRA9TVsSAnZWagAAdQIP/RBiNXmNh1oq7s0jpZ30\n/LLFyZyVEwOysIm8i57DT52KJfsiIoXxicSlFQwtSySq3XzsToIfM6dusQwY\nEStnoOudkKHQhOjHy53mLBAVNrNHo1zNy6kUc7ugWE7RpPsy7xKW4ZC0GgCF\np8hIOhrv6zhvhTiRIVTeFpVbpwEsaIyoIM5UuHH/OFjrnh2Np8yVtgdqo0tM\nJGAn5JBTjDu3vo4Bn8T0d53B3DXQPGttvFqHaKcnokJ66Iqjni3Ha9lRfCOi\nhrAAtmrG8MP5PI1BM/t0g/1raC11KATZofTSHn3770ronyQvCvrLgUOdJrvl\nMQjpm68+qhfFar+uYA9efaXuOwezwIWwEhaizhsxHK8OsXFRE5QsdF5GIh7C\ntWHJjOXpTOqspijv23eGhPTifHnmi6iCAbuoPQ7iTi/KKR/IWxSYIvWrADtc\n8t2p9dArZdHSr5ei8wtQ7tE6Q/TDJ/gHHI+4N+DoyUouRG+sXwZj77eW6pqO\nXAFI1MjY+twGFxZqSwdbWBQZG5FpxH4mAdlfDtbuZvPyctZeuI5cvTcwKkFH\n3miggvwEiW53ZHEyQknUHw0cZKLesBoZrPbOBdniZ0Xv/WulRslUVLH9STN/\nrWWuEtspAqDvgh+WSr/dvOsKan2awpE6F+pRDL8oOThSIxo37oype68LRRHP\nWSoz\r\n=A3v3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjyb4LjZRgnX6GhwCqC9eziMhhlq8bpjT2mM8iPjCiAQIhALvfilOlgGnC7bkWOCuumipN2+tVyDjLuAipmkNmd03C"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1637838431.0_1637838558389_0.6053622171440698"},"_hasShrinkwrap":false},"1.3.1-alpha.1637852659.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.3.1-alpha.1637852659.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"GPL-3.0-or-later","dependencies":{"@energyweb/exchange":"1.11.1-alpha.1637852659.0","@energyweb/exchange-io-erc1888":"1.2.2-alpha.1637852659.0","@energyweb/exchange-irec":"1.0.5-alpha.1637852659.0","@energyweb/issuer":"4.1.1-alpha.1637852659.0","@energyweb/issuer-irec-api":"0.3.1-alpha.1637852659.0","@energyweb/issuer-irec-api-wrapper":"0.6.1-alpha.1637852659.0","@energyweb/origin-backend":"11.0.2-alpha.1637852659.0","@energyweb/origin-backend-core":"8.0.4-alpha.1637852659.0","@energyweb/origin-backend-utils":"1.6.2-alpha.1637852659.0","@energyweb/origin-device-registry-api":"0.2.2-alpha.1637852659.0","@energyweb/origin-device-registry-irec-local-api":"0.4.1-alpha.1637852659.0","@energyweb/origin-energy-api":"1.0.5-alpha.1637852659.0","@energyweb/origin-organization-irec-api":"1.6.1-alpha.1637852659.0","@energyweb/utils-general":"11.0.5-alpha.1637852659.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.0","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.1.6","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.17.34","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.2"},"gitHead":"b2234078925ca4d66167726b3d44eebea8608bd2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.3.1-alpha.1637852659.0","_nodeVersion":"14.16.0","_npmVersion":"lerna/4.0.0/node@v14.16.0+x64 (darwin)","dist":{"integrity":"sha512-sO8q2cnsBHDzttAX0mk3xblvquxdsbDCV6PvK9x4rgcTNpN0Gmmp2FnrhHRM/1SNM8aegDjSbi6iDSgJROhmLA==","shasum":"d5793b870cc00df3c981db8e35b73b162e8f42d2","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.3.1-alpha.1637852659.0.tgz","fileCount":89,"unpackedSize":183067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn6Y3CRA9TVsSAnZWagAAshAP/j6wEEgrjV+w1d9mH2Wl\n8GAUDjt9E75+LdbWCKapzk9uQWQMH3jPozWTSJFhoh4Pjsf869VSqEi5UJon\nGG+hO6eWd6m7utD/yYXfu1UqSaFJlhLBcmtWlxV4T+bbTcT8U59oHXftvd7j\nXGKYSMJq5CSXmw338OL5t58UkeKkXN8aVQ8UoFtJFxGcLfNxb2z6/GyYbvel\nEWc9Ps5ibPXmq+iKrvUe9vz5RVFFIeLRUrkuzRZ9zp6mYOdgO7qltTx99zgs\nSRQqDHv/R9nhKRNGG611hLDCZCLbzzZMgU2mVFZsadeL0bcWjWVwNZVMY6hu\nR61yJX7L6pjvFFtfqBhXnKJWwLBWczXPxTqun98J6//LQu5hrA5bNjibkkj4\neLVZtyWTMfZBb0LQ4zVt6nUH9YzAn7ggJSaA1tZB2W6E/tKVYVlqxyinEdnY\nbahBIn8qt1z66o8HKt0T0kiAdhcxdbrmgYgH+5N7h4uL/q5SFRyo3L+DkHji\nPnjc+BBk+e6wYrpAnf0TFGLSCMy2lite1dtSeaSjy+MBvJ6rkNxrbQsSdMPJ\nFqjDMaNRsIGTKdFhmprUUb55NxyG//fndeDBntVTZNH7SkVge+k9ARHejaRA\nDQHGciSnd+L9jzKrcGP1sAxPtUWXzcpzI5CaXF/l+O0azz+SUJQ8mwDEyogT\ns1Z8\r\n=Qewd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWtm2GQUQU1M9v0mPKbL7ivM7AgwGgUdQHqbpAIl2uZgIgC6FVyEv95t0XbxIZXynDSsctN9T1zk3B8rOR9L3sS6w="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.3.1-alpha.1637852659.0_1637852726868_0.23095015109887695"},"_hasShrinkwrap":false},"1.4.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.4.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.12.0","@energyweb/exchange-io-erc1888":"1.3.0","@energyweb/exchange-irec":"1.1.0","@energyweb/issuer":"5.0.0","@energyweb/issuer-irec-api":"0.4.0","@energyweb/issuer-irec-api-wrapper":"0.7.0","@energyweb/origin-backend":"11.1.0","@energyweb/origin-backend-core":"8.1.0","@energyweb/origin-backend-utils":"1.7.0","@energyweb/origin-device-registry-api":"0.3.0","@energyweb/origin-device-registry-irec-local-api":"0.5.0","@energyweb/origin-energy-api":"1.0.5","@energyweb/origin-organization-irec-api":"1.7.0","@energyweb/utils-general":"11.1.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.0","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.3"},"gitHead":"4f160ff09d0d2579fa828f56b09a9058dd648bb5","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.4.0","_nodeVersion":"14.18.2","_npmVersion":"lerna/4.0.0/node@v14.18.2+x64 (linux)","dist":{"integrity":"sha512-8R4JYkp158Ok7YsMSijXqk2/tcnDiMjsGQsx48q7970yHPZenlLEPNvc5fWyK/9SEd1dz5H4GAD7HaDqcbx7nw==","shasum":"92856ee854b6fb293dd2e4116bcdc5448958fee4","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.4.0.tgz","fileCount":91,"unpackedSize":146242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxdNWCRA9TVsSAnZWagAA27wP/jNneyYasrICc6xqSSAP\nlCcMyGxseY7VlsHAbGVKDb1r0QXd7YEOFwtgYT2HbYgs+QJQfGozQgeXWStH\nfIqUNRlSLWuGzCp0lI/JU2q8xJTsOScO8UbFKTZPIoF/ywCfLxhUa0zuwl+o\nPWRxP9uxRPkjg7iSuOvoATVuwwswjVrw/w5D61nxxvza5EYGMeBdt8UJXV5m\ner1JiBQgdmw0uC5A87CNC92ulRq50QihE59SPHZ4arU8SvZ8dwmu/zIhJr4w\nSrBxWqGBxTpz26I5KYT8FL2orf+Q8kR0r0xPekClF3KeR0104PGAJnSmpc3/\n1JwTevgWtP8BTswl0WuKn9y9Ei8jgrj8yM++dmPmJz95PtfrsnckI1UbHIkA\n2C+i2vXlG/hUHL10HhQQAqJA5rAYIkph0CLgoAE5AlDPn2EIvSWMV4C6U50S\nYDgfqE06DTUMnn7jrlZDEtppvCQYa/wCuuSwgNxEabS2xH8cf0OFhT+qnJSu\n67B40Qms/MRuUPcj8TbtxPbNswnhwXg7GFAOZlyw5Q49lYXPeBSACU76T8Rk\nRh0qnswNva3M8bQ9P0GSUunyTcvY4GzQjoWxtLcYQ3sddKfrQRXO3oYXRon/\nh4wrpx1TU0YbtgxLW3c0DOhDZsXz18a4jnnGK6GaJ6w0bHmceeDzFlJINK1z\ng+UZ\r\n=bNUm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuUjmjlCD/ktsMgKNV1cGDN3bMSXoZ836zRDvxuLMQJAIgM/SjzSc/Hsdcsz50DmPzO0514S+vwHYk5Ql0CB2aulw="}]},"_npmUser":{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.4.0_1640354646217_0.49476545301866137"},"_hasShrinkwrap":false},"1.5.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.0","@energyweb/exchange-io-erc1888":"1.4.0","@energyweb/exchange-irec":"1.2.0","@energyweb/issuer":"6.0.0","@energyweb/issuer-irec-api":"0.5.0","@energyweb/issuer-irec-api-wrapper":"1.1.0","@energyweb/origin-backend":"11.2.0","@energyweb/origin-backend-core":"8.2.0","@energyweb/origin-backend-utils":"1.8.0","@energyweb/origin-device-registry-api":"1.1.0","@energyweb/origin-device-registry-irec-local-api":"1.1.0","@energyweb/origin-energy-api":"1.0.6","@energyweb/origin-organization-irec-api":"1.8.0","@energyweb/utils-general":"11.2.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.3","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"a66b98da68c3419d6907b1f441e6b44889e20983","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.5.0","_nodeVersion":"14.18.2","_npmVersion":"lerna/4.0.0/node@v14.18.2+x64 (linux)","dist":{"integrity":"sha512-YR27wD5DPd1YYImirQ7DwydBmVQvxazyEPr83YdYpPnYjYRZR9Rl6txsbiapG6ZnxIRArl2hhpveXMcfynxi+g==","shasum":"2747f166f72c8128bad30d791d55504eda242306","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.0.tgz","fileCount":91,"unpackedSize":146242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzcuRCRA9TVsSAnZWagAABP4QAJ9J2vFt0VWNwmIOPVZY\nesjBphALw4YIK/X0d1Gysp5YmUkfgetd5IPPgFlK52rc2iEtLzWHfuleMd0g\nLOtCzvXjRCaVrC8MpgHILzEgRuyb8lNNjiqo5AH0uXL2bJ2d9l9XGK8yZI+d\nU5g92sxUEN/p5h5TiQZns4uaQUReDw4tVpwW+VvgkvSHbfYVwekglrSQAi3/\nSsbp1jlzbY5H8KuPX84mYN7fp+8//WAXKf4UfVqiG99U+Kgn6gjiHPJ/xWp7\nC/kU+NPy8ZH9I9VLUQfesFKjdOUrX+VAo2gEGHdJkboOGvOZ+IfzMKPd7J35\nXuX0W+5O6IGMpLoFzkwhFOVbcnzeWus4x1LxcSKNZ63YNveYl+EhUH/X4wrf\n9rcMuwTiYpfg7VxDaZapkHU1iI84Rxka8/7FxGS4NevDZQXLrVSG7W8xy8ny\nj45g3wCUDXvnKs2xNEtPc1klCVXMfx6PFyA13NXdRw2ap5XzXtoAcYVpFo9C\n7zV+ftxP04jUSCgPIo2LP1QF10UY3ZSF8sblx86j8vGkCXaDeEwM7t2bwoAu\n0Qa6jcbn0nkvYJ7ZgVWp2sJnABbVhxsPxJwp2bgYe5hWYsvtWeyNbO/H4Kjz\n6GrqRscEa5Cmj7X8a/zkGorg5oHVpRozubrli0NAWenm3eygrIqiN/59Fm7b\nNgML\r\n=6fAR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtdMNunD4x9f8LyNqWj+qNxLgizphw4JQ/Ohh4ht2AjAIhAOC1hU25CRr55Emqv1kG4yC7NUmJTAkCQzRgiJnanCkS"}]},"_npmUser":{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.0_1640876945077_0.3559573411378185"},"_hasShrinkwrap":false},"1.5.1-alpha.1642431088.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.1-alpha.1642431088.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.1-alpha.1642431088.0","@energyweb/exchange-io-erc1888":"1.4.1-alpha.1642431088.0","@energyweb/exchange-irec":"1.2.1-alpha.1642431088.0","@energyweb/issuer":"6.0.1-alpha.1642431088.0","@energyweb/issuer-irec-api":"0.5.1-alpha.1642431088.0","@energyweb/issuer-irec-api-wrapper":"1.1.1-alpha.1642431088.0","@energyweb/origin-backend":"11.2.1-alpha.1642431088.0","@energyweb/origin-backend-core":"8.2.1-alpha.1642431088.0","@energyweb/origin-backend-utils":"1.8.1-alpha.1642431088.0","@energyweb/origin-device-registry-api":"1.1.1-alpha.1642431088.0","@energyweb/origin-device-registry-irec-local-api":"1.1.1-alpha.1642431088.0","@energyweb/origin-energy-api":"1.0.7-alpha.1642431088.0","@energyweb/origin-organization-irec-api":"1.8.1-alpha.1642431088.0","@energyweb/utils-general":"11.2.1-alpha.1642431088.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.4","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"a87bf9c604a89a31997d8e12d5c3554ab53a4415","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.1-alpha.1642431088.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-UIx75K+3d2NnY4GRG6jMXOAOvoaeCR8ieWVyvil0xL+I9fTs+CMiATGnDiiiV1RoUd2AANBzwjBMvwcWZQ805w==","shasum":"725f9b68f60ee06f85c407577dc91f58e383920f","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.1-alpha.1642431088.0.tgz","fileCount":92,"unpackedSize":162665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5YKwCRA9TVsSAnZWagAA3m4P/0eTXTXNHuRmPHjW+Odo\nifTZmwMr7MEsbn4UQlV9rzksyNYkc7rXCK/qBp3N7ob7wM/lWM7uiL7kvzJt\nr+Vuo98zxoYIrGHgFdhMV+F5VKX44YKtWjh/HAbC9qFSenYSNWjpk9B2qGn3\n1mP+kKh39xNnU5iYcUcvbCxrSIrbQu7pBgBkulYTieYT03Ma7KVV9iZhwzYP\nAnrHPkubU8zPuv9CWQp8CYhTi13V8NsZm4KMn9v7mtJLYNY9YtjyYn0eycnK\n2VC9d4h2xfxuIE+dB898IghIt/QEoU7bfS+zkmfAUjd3RelhhhspsDtfGiMi\nwnsyek7/AnuOr9w3BGIKcw2gCbdI4WXCi7ZPnA4/Ix15FQHXRjjeDMOMq0aM\n13g25/xLqoj2HzV9z166xMXKP9s1kB6PfQ0nu9cUJ+IqP9AJjjz9Ri8tRqoz\n39S6QTH3kII94j9tL+KBhVCM6y5L3ovhsgKt9wg86Tkwi1JfB5PHD/lJU5pV\neoijtriH0rXa3vWx0hTJYq0ce2lwAaUWbMq6H9tZvbsQQ6J08Gy2pvG92PDj\ni0dMQl0OoIxoDNJ7fuhbJePYG+IdO0QLpQagWztZgIysrgT//lOYuKUXKc2/\nYl+yfP/nv0Dc8i1mxLzPglZgBiyECgPP1kfzQrtkOFTKFxCZafu9emgk+FMA\nTNkh\r\n=HAXm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxA0WPq+ExjKEqIL+ky/PqIckqLw09JfNS45hBMkX8mwIgMwfEoprvdes/gTOLNvujsRczZeU5KD7lSJVBtLQUou8="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.1-alpha.1642431088.0_1642431152190_0.4412425019785038"},"_hasShrinkwrap":false},"1.5.1":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.1","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc -b tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.1","@energyweb/exchange-io-erc1888":"1.4.1","@energyweb/exchange-irec":"1.2.1","@energyweb/issuer":"6.0.1","@energyweb/issuer-irec-api":"0.5.1","@energyweb/issuer-irec-api-wrapper":"1.1.1","@energyweb/origin-backend":"11.2.1","@energyweb/origin-backend-core":"8.2.1","@energyweb/origin-backend-utils":"1.8.1","@energyweb/origin-device-registry-api":"1.1.1","@energyweb/origin-device-registry-irec-local-api":"1.1.1","@energyweb/origin-energy-api":"1.0.7","@energyweb/origin-organization-irec-api":"1.8.1","@energyweb/utils-general":"11.2.1","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.4","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"d9d5451dc7fc5421235a571a09b0263c8da0b05d","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@1.5.1","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (linux)","dist":{"integrity":"sha512-tWA/7UM6SpIFd3H4AEi729S+7inDgeAxGOvjO5pPiDoUtVYG+jx6EWuJwetE2D7wXrsmPDGD5n/ZBhguL2+3MA==","shasum":"958aad8054e2a9e06498b33b1bc1dc500afccac5","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.1.tgz","fileCount":92,"unpackedSize":162624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5qKGCRA9TVsSAnZWagAAZDMP/3HbENklPqJJR0NFhNA4\nt4i+5tS7m+fz/mmcuT/H2rtBSHiZkQUaL9vYWVNGIPkYV6deCV+YHp3aC2N6\nhk4bM3JKC+LXLlXsujjHGl7N8yjdRrs/ukYGQDFpj4YwSWYe/YHKCU6hBPMO\npp1Kmq/PibkepBcGL3odJ7KKCiJyXNhC2vyQUZQy1hc1VImy9z/Pm5zq/+5r\nJgD8qZC3FA74OYy7lvU5tjuzCmmNQTI4aAytOCo4aHoukjFPGoeOCLskDGIb\nP8FYXJnPbZYnvGOl8RKuRSm52FipMt/m7PmLhO52epLflGrDDy6wdYWur4gF\nh44GxXlQyC7VejsScRXqirf46rVv9GYoKJ3mIwJy1IgVKb7IZdSpFdIU/Cmo\ndY/D4oLEAZIpVFUWfPLltDWI9ttEpZAS0potOJ+N9azSg2fGWCyO8PswMvLo\nBEjt1hq+WJOf92Ex3A4Pqu+3ze7lWywIjZmt5w39RCFbmEJX7W/LgRaZpNo5\nHmb6/8mZuCrdRqunQGj5kNbKWCnE6grpefVkMcPv2iDfnmj1ZzOhY0BYg4lG\n5CUYoxV2pbZFi00aEoNwWyMu67o9H1TLlBixhxZt1c3j5bVe9AHtF9c6gkhJ\nU0C1fPHyH71//VtsUmHdpPD0UhyeHhn6xyctF9WpykyOBVvUkdipxgHZmbBS\nZM1W\r\n=Hgbd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGC0SskA+4zA+njbx8v35DW/VImzh6N6Qq53jg7y5ZSCAiEAux4O5WTk8EEfe9lZ//lS3J3bqoY2E/j/BazAd4nuPaU="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.1_1642504837825_0.31992848291610665"},"_hasShrinkwrap":false},"1.5.2-alpha.1646056819.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1646056819.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1646056819.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1646056819.0","@energyweb/exchange-irec":"1.2.2-alpha.1646056819.0","@energyweb/issuer":"6.0.2-alpha.1646056819.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1646056819.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1646056819.0","@energyweb/origin-backend":"11.2.2-alpha.1646056819.0","@energyweb/origin-backend-core":"8.2.2-alpha.1646056819.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1646056819.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1646056819.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1646056819.0","@energyweb/origin-energy-api":"1.0.8-alpha.1646056819.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1646056819.0","@energyweb/utils-general":"11.2.2-alpha.1646056819.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"5011b50d9c12e6e8b02437d0e8c40764308ec530","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1646056819.0","_nodeVersion":"14.19.0","_npmVersion":"lerna/4.0.0/node@v14.19.0+x64 (linux)","dist":{"integrity":"sha512-1qaahWQAI7q7D1xnWKaUEpFOVhFwxeq31L/jskQsirLrUUpJhLhNmcCwF3oPpchnPambQ1O0nomDTqirhPA2aA==","shasum":"215a13350e6582c2fc2724ea40bfd3f2e48e50be","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1646056819.0.tgz","fileCount":92,"unpackedSize":162917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHNWaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo1Aw//bzqi8XcTyJz0/xKbccDlyoWEcIaWZszk7fRisNUVUddfxXhY\r\nDneSVNUiAVpSSn7uojS1BvKApRLghEa1I5fuLcjFlu1mEPAWHb/6Md71eMuB\r\nfS1xzlBKY3duswqMqAwK38vMd1eRpn6eWRiSlnpWVP8WWmKGwswkgBSNUk3X\r\nVN3wIlKHGBepMCEkgRZi2Bat+5eAjRl6K4uPPhzb6p6oVkoZaPVYGWuhxsM1\r\n0umPyJj0QR83N6cGJ5pdS0yca46sNfzRoRzjXaWLKPDjskShkdY/c/DNr4sX\r\nCrndRim0NyJLwC9Jqgs8ia+qnpSibyKwpuLUEDZf4BuNdXoixsoHgL44OLV7\r\nG5lg5ckcEWA42drEmu8T64NrtZeSWJIABGa85zrXWlgvRFQXNPOHUt6n+kck\r\npKHL4bkwazNGIfOMhreZXxKo+OnalIK/clsaFJ02o/Kca8GpYx/JCDw/kUFW\r\nEc6mRvLbk4DQ+y+lycJCnivVYCx5OUpHvulZckQw52sxNdDUBo6ot28LHuBa\r\nsMVQwNdQTftSG0pcYsWPQc6tDAmBmiZSgtPgiiak2B9iEjzS4Iop/AEGSJet\r\n49avjpgElo/s62+Phli9TdP8sDAJUALGKUgoE8lI/oRCsRt6LPOemp7MFs6f\r\n5K9mma3NUai0AMmSYavBpTnSPNZq7X1/yTk=\r\n=x2PG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDhf394P2/bRlqUAwHNUmUU7X2KIqz3az/s0bcpcHp5gIhANYYODT4n4afQLVUeI4IOPOov5Motz21dOPfJD6Hs5oa"}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1646056819.0_1646056858233_0.4197538406729222"},"_hasShrinkwrap":false},"1.5.2-alpha.1646058469.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1646058469.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1646058469.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1646058469.0","@energyweb/exchange-irec":"1.2.2-alpha.1646058469.0","@energyweb/issuer":"6.0.2-alpha.1646058469.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1646058469.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1646058469.0","@energyweb/origin-backend":"11.2.2-alpha.1646058469.0","@energyweb/origin-backend-core":"8.2.2-alpha.1646058469.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1646058469.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1646058469.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1646058469.0","@energyweb/origin-energy-api":"1.0.8-alpha.1646058469.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1646058469.0","@energyweb/utils-general":"11.2.2-alpha.1646058469.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"406e7b04bd9f3877a82d0f383a971c84e998db11","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1646058469.0","_nodeVersion":"14.19.0","_npmVersion":"lerna/4.0.0/node@v14.19.0+x64 (linux)","dist":{"integrity":"sha512-1cVG1twxVfcbZYsJFF4WYxfY35TpQcmeg6bMVvCOu5+KFdntWZ/UCzhWs5xy0g5JFlSxDpNy5DWBupoc/r0Qag==","shasum":"ca36f75be109005669f2b36976e3c3dcaf0e54a9","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1646058469.0.tgz","fileCount":92,"unpackedSize":162917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHNwLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8fA//U1FaPhl5NI15AScX2iR1tK7ONhR+tUUPiWFQZ7mSosZf4tQo\r\nh/q3GyKWX4u32oLl36jBdzEdMOjefEbFQfbXcJsIHSk3Qwbctt/XuksY8gMP\r\nF3/d+aaMBWWOnOHI3OEK3cOgvPSPFo/Z49qNdQdLb3sxUASs4/hQwBwn4R0y\r\noAMZoMzeP83dD2nUlQX5uWDGemo4I5LHiZFrOVrzSZxRKB6QqoagvcUkXV4Q\r\nnbRzrYPzEvZiU7fdkqtsvZK5FHPaTMLLXEtVMUfh9+nu1leEU/4GWdWPm906\r\nLyZH5gsFcdUPzOeObQRS4gu5SbusdoRaDwhmsK0OJiIDLnZkra97bTw5yeKd\r\n5zXddZf1kQmreWxuvei4NcSdJnbhn3Jl02wgVgCnzOJBU6xrGwDzzvoSVaGi\r\ntLyEAFd4wEzZB59Nrt6JBUrXlmORnxaao1foIM5r8Ebu0BVTb1BspACdqfRU\r\neArOAr7tp+x/vWktm4w+7bgHhH5dr2ZAGmFwB7yJ0tdooIqk1PnJhxsCAPKM\r\n02SNavEPYwkjzZY7u9l4eFc+cR4vBEH83D13OfgI/D+e4TjJ98zLE9pRuHr8\r\nhZSGPL2lmEyMTNI6cJQecohxP70dQarAZW10vJIk8HTLNQwsAitP+v4L6bDC\r\nqehQXSLKCSAdP4za+ubynmJwqXzxPhH8fl0=\r\n=wske\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDh+LIPqYPddv7ZXkaSLH2fCsoJMyzKbrc6UJldqAcuGwIgQTlgaYRcjcm6pCNzEKkf4KMSPeXMOOQKS1XfHTFivag="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1646058469.0_1646058507795_0.7788486375814048"},"_hasShrinkwrap":false},"1.5.2-alpha.1646656455.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1646656455.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1646656455.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1646656455.0","@energyweb/exchange-irec":"1.2.2-alpha.1646656455.0","@energyweb/issuer":"6.0.2-alpha.1646656455.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1646656455.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1646656455.0","@energyweb/origin-backend":"11.2.2-alpha.1646656455.0","@energyweb/origin-backend-core":"8.2.2-alpha.1646656455.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1646656455.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1646656455.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1646656455.0","@energyweb/origin-energy-api":"1.0.8-alpha.1646656455.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1646656455.0","@energyweb/utils-general":"11.2.2-alpha.1646656455.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"12c4a183f80ab6c91f4fd895bed35e9a4d6964fb","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1646656455.0","_nodeVersion":"14.19.0","_npmVersion":"lerna/4.0.0/node@v14.19.0+x64 (linux)","dist":{"integrity":"sha512-9SU48/543bGGw/n/e5XEn3l6SbnvgMI5Je2zf4+jmyzXNUMoTDE1F+iztRYLwrIs1+ebRl6WBLOuy9uf8fQRZA==","shasum":"420cf83c2728ac3265aeaf69adf59a1facd3c57e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1646656455.0.tgz","fileCount":92,"unpackedSize":162917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJfvpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorYQ//WdrlG9QWJ9w97GaqJHC21uxnOpDXw+K1mqP7bZmZtRQD4Owl\r\nA6QiS0N1jR1E3xjqR3+GBvDKDV2Co90xqGwOOcXpMeCgSElHqsKIVBaWTUZ5\r\n3Yk1u4E8Ewvr9TCdR9fRY1bEtiBfPeUq+la3I6G6k094NE64ZBftEZ23MSrN\r\nqfaw3gSbohSBKonEusw5FLscuCEZqnCjnXzqvvZyeqIRHKsKpUFLndB7rtzZ\r\nJaD1mPdXdvPI7w26lkjbfKGMk3sKhwhC+0O0m1r1taKu4YFKpVPEprOUIocl\r\nouDLWIBDgXyPtE+Y6vSvcAN6RKc5YO64jCqTjC0qHpyYpadRwWK0jdoZJHy+\r\nHupvdBpQRbmaluaSKBiM6yyxT/IO27/VPN9XKto5iVTPKtmAI8Vj6MJOJhhg\r\nedBjZipQ6dXiAjMm0BITNPcKqRMnfuvzYYuc+zWjJCgM6f6cTUUXy87Qj6Oc\r\nMlY+E12zIInFXDQ767Uc0e2WSbOah/Csp6JBjWE/f2lSIMlRXEF/0qj4s6E5\r\nGS4wTord67Ur8JyNJp5ZGw/aD4ee8Cx2MJhSrEkMC5yCUwZe6YwkBRe/Uo0L\r\nRbP6OQjp27IhEE4bmp7IxcIBuxQA1iVRAt27jY46lb+37skvMVCzNxDq2lHX\r\noerZgSPVimwlWz2ml1319O/OqN3Ohwr3w2Q=\r\n=gbJ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHZeZ8nIhckxzF7iWxEYt5q2JSjWA4QA8UOLRkEdJGpgIgT18/tDH0fxq/Z528LWH+oU0tnghyPu3ibojiZoaXczY="}]},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1646656455.0_1646656489492_0.9882202963446827"},"_hasShrinkwrap":false},"2.0.0":{"name":"@energyweb/origin-backend-irec-app","version":"2.0.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.14.0","@energyweb/exchange-io-erc1888":"1.5.0","@energyweb/exchange-irec":"2.0.0","@energyweb/issuer":"7.0.0","@energyweb/issuer-irec-api":"0.6.0","@energyweb/issuer-irec-api-wrapper":"1.2.0","@energyweb/origin-backend":"11.2.2","@energyweb/origin-backend-core":"8.2.2","@energyweb/origin-backend-utils":"1.8.2","@energyweb/origin-device-registry-api":"1.1.2","@energyweb/origin-device-registry-irec-local-api":"1.2.0","@energyweb/origin-energy-api":"1.0.8","@energyweb/origin-organization-irec-api":"1.9.0","@energyweb/utils-general":"11.2.2","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"c0d23b782134dd87a9873e037ade881b09ec2a32","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@2.0.0","_nodeVersion":"14.19.0","_npmVersion":"lerna/4.0.0/node@v14.19.0+x64 (linux)","dist":{"integrity":"sha512-CzBTtwjyc1BD8t+zZVxL2J0mBo1Mgb0/hw8WVwRDVReKYmD/xgwBs/RHgpiPM/r3uGrx/JMzgfpHzhLqBhrUwA==","shasum":"67b95c69677e04033d91289457d056845c950167","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-2.0.0.tgz","fileCount":91,"unpackedSize":146250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiML3gACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpr3g/+PBqJ0ezi28DeQZe2qGRHB707oqHDTvr3xqco/3psjtL08uEm\r\nJ6h9+BwTn86U1NA15pgkOOK71D5B2Xq2owdlgaKZjLxVzBZL/eb3gTay6Iny\r\nx2mUVo3U4x9o/CJKYBfBWqf/6cOrgu6mgHirBZ9hRqXg2wWzn06h+VtXIpVW\r\nR2LZhmfMR77aKC9V3VpnbiesZvr1N/QIjKnHLL7Jm/f2JopFvCu1NW5IgwgF\r\nLpm/VkO/UV7yanBgZoEmyJ6ZLa00Ro5s31Fo24W1lwmSe9aTOpUyXO4hWog3\r\nDMN9qnEO+WxfelVAVXJZvSwpvQCjKRIaf5mRoQU35abzvEo6aeR7UIZUACzn\r\n16vODGiAx2LR2ZECAVjoI9KAMg61OZpjt/ODJKZrGFrLSVNCAz1RxHoONW0s\r\n0YXs6gUHMm7rDfFq3hPCs+l1/otwP5moAllPCD9Bfy8MiWdWZISqibxtwcXR\r\na5GvIK4K8Ayf44GWRkr0Sm3Z/uN5q+tW3ffRVMZTYuJy2p7ufWN8irAW3Fx3\r\nV0jhfOWqonIfH3tnOQAkkZA0j9zPPgYGorLlcNzzMcAsQBgdfaKRXscCrXuv\r\nrAjZowdnLlZribMDz+33/BYQxGR+vGQJZgnUabMEcGAfIcCw+yQpFgYQaQER\r\nqsDGIj8fMP0uyNxI6pQecpPDv8daBu6UW/w=\r\n=hCYv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrXvvZKInmsCT+5YgkR8L4VJncSNecu5mBbV8Slm9hWAIgKHRTN+t5UEoVYKdiTsccAofqijMTxG7SNPYD0iLRmjc="}]},"_npmUser":{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_2.0.0_1647361504003_0.8582980270066032"},"_hasShrinkwrap":false},"2.0.1":{"name":"@energyweb/origin-backend-irec-app","version":"2.0.1","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.14.1","@energyweb/exchange-io-erc1888":"1.5.1","@energyweb/exchange-irec":"2.0.1","@energyweb/issuer":"7.0.1","@energyweb/issuer-irec-api":"0.6.1","@energyweb/issuer-irec-api-wrapper":"1.2.1","@energyweb/origin-backend":"11.2.3","@energyweb/origin-backend-core":"8.2.3","@energyweb/origin-backend-utils":"1.8.3","@energyweb/origin-device-registry-api":"1.1.3","@energyweb/origin-device-registry-irec-local-api":"1.2.1","@energyweb/origin-energy-api":"1.0.9","@energyweb/origin-organization-irec-api":"1.9.1","@energyweb/utils-general":"11.2.3","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"4e563ea19091b0ab17f344e263b2f62a94e64891","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@energyweb/origin-backend-irec-app@2.0.1","_nodeVersion":"14.19.0","_npmVersion":"lerna/4.0.0/node@v14.19.0+x64 (linux)","dist":{"integrity":"sha512-/KB7z/pssz4oiTRNsqT8mSB54Qr1A3cayxGor20zaPmEbOfCjnuQsnhxWcNtJSL+G4xVz53ndSt17dcaq2GGtA==","shasum":"ce626e614240e91a06f12437ba302ee9dba0df59","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-2.0.1.tgz","fileCount":91,"unpackedSize":146250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMdYvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+Ug/8DHDwM59SfCsG2lzXJP1nCxyiQ2rUEYZ+ThS5KZRqkbesDeDC\r\npurjz5+RHacV6QZJESeB3VoSOKx4WGXXDTYvkRfY6pNm1IRUTEoVwWgTPLlD\r\nyqxoT+uu/rhVBtenLwsBCJ/aWbre0euXzG+uozwy13hoHOjObRXypoGatVjt\r\nz2VhK5UQTHXDtBBZmtSRiN3ghPH2kUdSAon62pDRcoeiqfJkN9isWX6HvA6W\r\ngLsfaCoAmXkzVgSNAHK9dQy6cbT/BxYN7mm3qZTCJ9BztTZMlKXcWX9d4P2B\r\n3jzm9AUxzzxvs3ecJBA8lGEofQ3/BgSJlTLP4Pq1zL/x2n95lBBOJyFm+9uq\r\n8CTKzx7lL1JAln08bya2fRj7e9RHtu1FZP/GQrIoNd2IFivD+kiwkCkeHDS1\r\n4HVFcBT7oW+Mmf3exwjFWpK1PbYCShFvId3xYHpXYGoGcDtyka5Wcxj9mjjS\r\nzO+/+ikyPMIHkSHFeC7ZeCmuXvferVHkEeH25zvgLqoGn+/nqrR/U0d29DJ5\r\nahBYPG+oSUusIfHj3zmp4aLsbF9CGehPX7tWnDlZxNg/7kEnmwviGTvO7ayQ\r\n5y9ta1AwrrqeqwHQSZDPfzqk2DXCx9yOz75rK9omK2b08jTewJym788wG/bB\r\nCIjFhkKTc2Ot3AMIM8oyforZfyhjzmj2RiQ=\r\n=T1Na\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIECjB/NJeRG9S+T4Jo8iuQNVhnOIllCGD0jC7oCXjZGVAiBu3Jqx/F3ojeiwPsQBtWfXckACtIDD1Pl3kKfySMit4g=="}]},"_npmUser":{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_2.0.1_1647433263195_0.13905894886231795"},"_hasShrinkwrap":false},"2.0.2-alpha.1650636678.0":{"name":"@energyweb/origin-backend-irec-app","version":"2.0.2-alpha.1650636678.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.14.2-alpha.1650636678.0","@energyweb/exchange-io-erc1888":"1.5.2-alpha.1650636678.0","@energyweb/exchange-irec":"2.0.2-alpha.1650636678.0","@energyweb/issuer":"7.0.2-alpha.1650636678.0","@energyweb/issuer-irec-api":"0.6.2-alpha.1650636678.0","@energyweb/issuer-irec-api-wrapper":"1.2.2-alpha.1650636678.0","@energyweb/origin-backend":"11.2.4-alpha.1650636678.0","@energyweb/origin-backend-core":"8.2.3","@energyweb/origin-backend-utils":"1.8.3","@energyweb/origin-device-registry-api":"1.1.3","@energyweb/origin-device-registry-irec-local-api":"1.2.2-alpha.1650636678.0","@energyweb/origin-energy-api":"1.0.9","@energyweb/origin-organization-irec-api":"1.9.2-alpha.1650636678.0","@energyweb/utils-general":"11.2.4-alpha.1650636678.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"ab41d1e2ff248d967641a1aa7ed54edf7ef1a518","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@2.0.2-alpha.1650636678.0","_nodeVersion":"14.19.1","_npmVersion":"lerna/4.0.0/node@v14.19.1+x64 (linux)","dist":{"integrity":"sha512-CeyNQICKT1FcVmw9jJKSZ8O59oHuqF7LnRFgL7Pgfg6HblRLeQjrsfh+u4WMZQ/NQNfY3KtTF18AJ9S9XhjznA==","shasum":"aa89a6c3693adfb0a8f2ec00a208f7f9838af9d3","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-2.0.2-alpha.1650636678.0.tgz","fileCount":92,"unpackedSize":164083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9Z3u9UhwG+2ol8hzNdJt3TvyGBbKmzNnMfnFDa1phCAiAxscqnuKVNiqYyiFBsnAoYvRibFWDHDNYt8taLeh+Jqg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYrenACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrpuhAAjoQ/viGE8WWAtcXYJjDvWrpe6GFiYHU2cMTRJXGL9cXYEUpH\r\nTHrNK2JpJAhmeOJBoLlv4Tcc8TBobhJmY06vH5Hx9bdLg1gAt3sqc4zbQLSG\r\nRDt2fsQuvHas72MSgfhpnl/zrd/WM1dyxuUuH5mosP6CspOCo3HzaNY4XmCG\r\nkx0sOaQwKXXG5zcHfKdZ27hpd6awD+pBKxh4i1ZUXYOerBvvrMKzdAxW81kM\r\nxlFFrR5fMZGYhSHMuNospfI12HJLvDIv73ZuowLT1Xjfou+S54Dh18BbZJ2M\r\nS3e4Dq/XNb9B1MCSVQIExw50lwILaoLXDMfALGyEd+OUK/IHe7PGodqmVRus\r\nnUGz5tCgoCSrgMDURy1zsRZ8dkDrpl3U8TmPfd5OqFA22Ije0yycNM/c3WJi\r\nmZA1qvm5PhXJEaLM6Y7vXd7lCxslmWV9URhrOf91rydBIZnN0atQNB5yeiza\r\nQBfXSZVnml0+kvK/vj1byLa6p7cVmqAInfw6fIIo/XYG4PsqU7ik0lSPZqn1\r\nrY2WWelMT9KqulB4Y3Yj7PiV0Q/4uGqqXTgRxUohDGI11gcfAuwYHlKPKJWv\r\ngUyWPeRE28EoWMLA96N7xR5QNYrOCVjEqy2eWTdd7IxLXxbIeFU2IQYVBndj\r\nkjQkD9N2bo/VZCz4QdTiJd7wjfnll6Ds7lU=\r\n=h/Eq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_2.0.2-alpha.1650636678.0_1650636711040_0.3103839057887787"},"_hasShrinkwrap":false},"1.5.2-alpha.1651149594.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1651149594.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1651149594.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1651149594.0","@energyweb/exchange-irec":"1.2.2-alpha.1651149594.0","@energyweb/issuer":"6.0.2-alpha.1651149594.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1651149594.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1651149594.0","@energyweb/origin-backend":"11.2.2-alpha.1651149594.0","@energyweb/origin-backend-core":"8.2.2-alpha.1651149594.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1651149594.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1651149594.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1651149594.0","@energyweb/origin-energy-api":"1.0.8-alpha.1651149594.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1651149594.0","@energyweb/utils-general":"11.2.2-alpha.1651149594.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"44bb904fc7ae515fbea1abb997c308f3be59a042","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1651149594.0","_nodeVersion":"14.19.1","_npmVersion":"lerna/4.0.0/node@v14.19.1+x64 (linux)","dist":{"integrity":"sha512-nDFN1YteXmf/tkDezdNWofsbkdcxMoHoA3hAmlqASu5yYo9aH4xfJy5pjXTYRxNWKulUYd4pZA1k4dPV8XWJhg==","shasum":"0a406bc31d9a12b5eddde8c4d80ded5a1da304df","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1651149594.0.tgz","fileCount":92,"unpackedSize":162917,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDf/DEY+OT4Hh2Ae2jJQbPsD/+hO5fmRGFNbhQrpj6XkAiEA1WsiW7mrCjk7cHhadOgrtJdT/iaybCHDshF27uK+pFg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaotCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr3hBAAiGF+7FEk41snP7Pjw0hAHIQFUuJTPuhSmLs3H6NkSWaR68U4\r\n0TKeg5e3j8yPUQrAYQAIlzIjkMiJUvdLmLO6KWHx3jkRKhR5xNhinPnzOwdC\r\nUH5oBXbPG+CAHTRNzPi6XTzSg2peABeYOFR4ZQwHAe0glbjmpasOSuQWQ3sp\r\nuhuje4YSBOfsCDM9EjJoy79+m3ts1mmmaRe0sRP32cNs9k0BvwJDiofBm5TW\r\nKcSj+hdLh5Oj1nb5u9QpYLdhju4jCQ3WmZgXoKLSNCisgCwKOK5sSZWIBRlM\r\njoK0x0TbJ0IN3vZZdeWIpt4pQObLCEx9oahOhpbuVIdc4fBaQ0OxcHAQOtBQ\r\nbQIyXxU6iyxqHooUxoQWznuuI35c7GLsyEUwTwIURPxYQgfD/UdrCQ07FzwQ\r\noRANFTuRWQ8akUhLzP3S8OQMc6X1VdNQR90EhNUlU4d4gUrDRVuS9GfhafhR\r\nr3VWEJM1v4TuTV/FjHUexd+6NxGquSY++fC7K1/ubAXdYIYpoG5IOh34SCgC\r\nSdS03TldAe8xW4MVeKRwtB+8JkeDTsueGPdYwPDx/B2qEhOaiDkuI9akpxFy\r\nMx2Pl1t2+Ab+f7FBNuVPs7Im61+nRy+RZSIOmuMK/boH3Z2mrG/coevGdd0S\r\nX+RipEMN72+2nj3hH22CONPXdF3+yqEvKl0=\r\n=i6he\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1651149594.0_1651149634291_0.8083735234187281"},"_hasShrinkwrap":false},"1.5.2-alpha.1651489311.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1651489311.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1651489311.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1651489311.0","@energyweb/exchange-irec":"1.2.2-alpha.1651489311.0","@energyweb/issuer":"6.0.2-alpha.1651489311.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1651489311.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1651489311.0","@energyweb/origin-backend":"11.2.2-alpha.1651489311.0","@energyweb/origin-backend-core":"8.2.2-alpha.1651489311.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1651489311.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1651489311.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1651489311.0","@energyweb/origin-energy-api":"1.0.8-alpha.1651489311.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1651489311.0","@energyweb/utils-general":"11.2.2-alpha.1651489311.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"43799d4608da1940b807e127ee8480d4b884c4d4","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1651489311.0","_nodeVersion":"14.19.1","_npmVersion":"lerna/4.0.0/node@v14.19.1+x64 (linux)","dist":{"integrity":"sha512-o7XIQ/mZVLsaJqQ4Y40uL29M99YDeOzbomks3PgyR192DrVQuA4hdzXEVzLCLUlGY5LzggdxfPZlrRwCwdwXJQ==","shasum":"3ca1343f24024affd8d7441862f22ca735ca0c55","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1651489311.0.tgz","fileCount":92,"unpackedSize":162917,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKXO/gG9hpZR353WpSk5BLUBLkkT199gilIFJSOh52GQIhAKnyME/743QUyz+dz4bsZW/w+/ovemYI/yFp62TJo66+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJib7pDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrmKA//QwJ4RAIiZReeTFBGwObe0TFX2cTsb5pmhRHWbnV3B1gHL8nh\r\n0tPZXa/aqSk4hdJvFzRY7aH61lfXD2Boj79NFg8ojI+rKwMaX+hC2D5DZxhn\r\nW85TDmXCWml9Fl5kM3FFZX7FX+ZtP5g9LAa2BnuMXaipSstb+84JGemtkmKm\r\nfzAph6F5VMrCmMkszQRQy7Tzs5o5t3KSNclA5pX82Y3bmxemrJTXVmQ2z8hQ\r\n6dMiQ09M2pEJyleeIeqmxYzoQHBkW5XJjaG8vV8axw81I3mBUOotFZ43nUco\r\nYUBj4Vw49ItK3uH0mTA3m9OJP1+rhtsZSAI0fDWhnwix0N7EkEGMaS33UR4n\r\nSx7IooSuKN4sbWRcx9KqKOD6JW5Q/9V7n/e1Ud261p+6p+BJ4OZewRF6WG+I\r\njIK7wxa1pP2QIrfjh0o+UDJOdnKi71nKjPeu1yPNNZU/hmGyrcKnvwemombw\r\nJf9FnkL/Vll2UT2ZGILjfc/m66AkiEKFC5QVplmHn6ajSpAm9nQHtiBgU9bj\r\nAND3QWeTBw7s1SNoDbDYRAoZeshu5ZuvT+mug9TdXwdVyHWXJF2ASZFqDr/g\r\nMeEpJyeEDI7tZOhomBI9SeTqOOVwatLbQN/SuSFEKO5+uDXgoEfMfwSiCqi9\r\nz4Y29Y4faMHE1/ZZ4xIQ9kcp2MlQmjVDEpo=\r\n=GYwq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1651489311.0_1651489346895_0.26619316961792316"},"_hasShrinkwrap":false},"1.5.2-alpha.1654697952.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1654697952.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1654697952.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1654697952.0","@energyweb/exchange-irec":"1.2.2-alpha.1654697952.0","@energyweb/issuer":"6.0.2-alpha.1654697952.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1654697952.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1654697952.0","@energyweb/origin-backend":"11.2.2-alpha.1654697952.0","@energyweb/origin-backend-core":"8.2.2-alpha.1654697952.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1654697952.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1654697952.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1654697952.0","@energyweb/origin-energy-api":"1.0.8-alpha.1654697952.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1654697952.0","@energyweb/utils-general":"11.2.2-alpha.1654697952.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"b4ea3b262e669e14092de690c8f4bcff7dd2d57a","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1654697952.0","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-BkzztgFQb93lN+71WNSyLpTx3pO9vxCacCJXyQKZzWF2JIf9DD/jefgXUHweff9WKif4bu53DQB4zVOykOtPSA==","shasum":"72cb59d788a80900d9f94c0daab22e5ea7daf0a7","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1654697952.0.tgz","fileCount":92,"unpackedSize":162917,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0N3u6faXdBAbJVonulOpjJ8u34dex5u9RynNmP0t0IAIgDJ7nqZtcLdT4oleM5duEOINlcJpq62p2KPLUVWfk4t4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioLAPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrBXBAAhs3FBgHhCzeGOVihiYQ6lLsHK+Hg+v82j8KmoBX8A6nBOVcb\r\nmZEZZKyOxt3vFvJQbqlEDdWKKhpxWquvUU1svkr11rnBxpqRLpug7emt70F7\r\n44vq9JkTTBuPFz8B7d+YFPRn+KWQBjrFiSJ6PhrknhRpdOu9hK8kBY6UUnN1\r\nhgeTMzLoi+KuirM7fUl+Fz55hcegOJwYMJECZodv62Hm1E+UXvsIutSkchUC\r\nzM4ktgMz/3Sd1E9jxGMiPoPicc8l2wlzCWmOsRCskB57QN9iVxmdu4uuA5J/\r\n0aqbMJHRnw3zJv0ybBSYYN9g00sR0M5+8IFWKc1/dRZEPiZMWMPYUol+3/FH\r\nyGjMO/YlIrGdYTxEFhk0VU28X4oy2Wd6bDQQH03ieHmU1z2QCvNeTdtfuIcQ\r\nir6YgPZUItiu5qBwh9aXwLr+eFPzETFV1Ti0w/qD+tN49r0Fzpt4RDHT2SeL\r\nNxGvEGvk7JlduQpO9R7OvGcYEqidLc37S6PrsErIuKHdYAhgJJ+qY0m3jr//\r\niMAxbDY3ePPh54AudcyDsIDlLercwpeXouqEloyONyVzLq0lGsdUXaah/E6m\r\nb4Af9I2Fosy8FlMIWta+SHNQRpDHi9PTAr7+MGdqWAaFMrMuv03lgo6ICKG6\r\nnd7awsExzgPMiOT1QDHlupomOpxZfXxHdbU=\r\n=dwah\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1654697952.0_1654697999064_0.7638668666676669"},"_hasShrinkwrap":false},"1.5.2-alpha.1657642980.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1657642980.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1657642980.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1657642980.0","@energyweb/exchange-irec":"1.2.2-alpha.1657642980.0","@energyweb/issuer":"6.0.2-alpha.1657642980.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1657642980.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1657642980.0","@energyweb/origin-backend":"11.2.2-alpha.1657642980.0","@energyweb/origin-backend-core":"8.2.2-alpha.1657642980.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1657642980.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1657642980.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1657642980.0","@energyweb/origin-energy-api":"1.0.8-alpha.1657642980.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1657642980.0","@energyweb/utils-general":"11.2.2-alpha.1657642980.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"294267037e3df3fbc32843d2eb0c572fe7997808","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1657642980.0","_nodeVersion":"14.20.0","_npmVersion":"lerna/5.1.6/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-1Ndlm6D7pZvRaCNzAGYr72px2xmoHQcp4OUG/5ChHjSZLXiX9P/7H5I5XBPx8CJOG/MUPrYwCbW7zNr1YbfkXA==","shasum":"e5967d17cf85674bd9af725b4720effb1d957146","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1657642980.0.tgz","fileCount":91,"unpackedSize":146535,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYPX9d/WhFFRRNtzwcG+EauBZ2pne6PKq0P1mSha73lgIhAPAZEbFc89YwnuUcsYYLHrpabzuhrHIOxZg2mHoSUDqw"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizaBhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqd7w//frUompjbmiUkq8ZqOCdIoKkG/tFmlmh1C3SdsCzeGhhpj5Sc\r\nEVe1FnIVoHFzMVxUlJC92evw2xE5nizoN59eaTBXS6oK57x6znpiBLGL/al+\r\n/xwGA1WHJEvy2g1D/gWOrjC6slFWkucBUazAshWIVIthb3DJcYTnMszHRrVP\r\n6rw6FUd6gCtNCM64laA2cCaX6seofVE+t71xdweKmx4GX99Y2Vne5D7Pk+i8\r\nosBDg0lR7lWz+xdPkLsjp43N9HWCANZdTKKg9JKrEErKP9p4cyoFja2Kqb/Q\r\nd+QQteBzcGbg71W/EjhWGJhJ3AX26ODWrfQ1xxbz4FJ+/YRbwtZlsUNjApus\r\ned1LLMOpGg01/wPnfjvmC5Y4iQLVOMiA+V+7pqhzCZChfrCcV6SOd6iY/k8m\r\naLIsiEtoyhgEUwBH4pVlAorRdfCDS66yuq5CcAXYwR+hjAFmeCfp8EFoJbGG\r\nvM+URjHsmf3/AdY5eSs/EsJt+qcdrMbC6KtrnM6wd0Km3b5rSfkmq6ZyaNMM\r\n6TArCAhteKEXYqqhxUuu/bqH0nrolEZonUrNfoskjF6nOZdtOarO91rAgmsT\r\nhZBKGP9SnV0fTxA44q/kzVSnO3EiezgYQoWyzbjYXGWCSQ+Biun6fmuiScr4\r\n+cDtPQ2F1fv/QFgVxfi2GMdsrAihJIxRz4s=\r\n=cvjY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1657642980.0_1657643105602_0.0777716023040298"},"_hasShrinkwrap":false},"1.5.2-alpha.1658745615.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1658745615.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1658745615.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1658745615.0","@energyweb/exchange-irec":"1.2.2-alpha.1658745615.0","@energyweb/issuer":"6.0.2-alpha.1658745615.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1658745615.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1658745615.0","@energyweb/origin-backend":"11.2.2-alpha.1658745615.0","@energyweb/origin-backend-core":"8.2.2-alpha.1658745615.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1658745615.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1658745615.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1658745615.0","@energyweb/origin-energy-api":"1.0.8-alpha.1658745615.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1658745615.0","@energyweb/utils-general":"11.2.2-alpha.1658745615.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"8bbd97decd3849ca21accc33c41a6f2e8d8120e0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1658745615.0","_nodeVersion":"14.20.0","_npmVersion":"lerna/5.1.6/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-OnOI/4CAX1zd3FLN9Vs2LwX/G8kwNePtoE7cdWulq7NBYsv4UxGABARviyC8W66jlk41JjABbSEN1B8Rgz+zpA==","shasum":"a3d30032efbd4b6dd284238b87f5e7810bcc6dc3","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1658745615.0.tgz","fileCount":91,"unpackedSize":146535,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGp4DwAsKLzh66In+ZqsB5PAw8B/tUIiSog6p6bmeuq9AiEAxstNQ/TeZYk8VqYhHpJpNDIyctMOIidZw1AVWo9xVik="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3nOcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7bg//feu7MVnYgYqExMCAqlt/jGt8mbUZYNQKfk2hqbHC8A7x7iX8\r\nCESqib1Z7nn6dVMvWZrMx9DkUiq9JWmLh3bSyvika3eq7Wlbx5UHKsyZDuVo\r\n0N7Knvp3B+QB4vE3P+CGywV1g/oxXYT92F/V3+rk/ehZAUKs9wKxJ6f/ms0Q\r\nJ071x+zgvxxqIk7vngIUv+hfUz2DOEB3hXQFpt3a06OpYV9MqG3Rk5/nTHH8\r\ne6czxTil9K0vGnw1CsJhD6RdMT4K29ANLVDVMQAYBtc+BuI5xDEZfrWVhDLo\r\no1/KXjL8pAvt5Wg+BvG1iF4rYDTJB7ViC/D9zlyVYNBKXpslXPDJF0bWWVCn\r\n2rY5jcFrlApjRkbZhqc2hxbsMttixNoOhXo+1W9jcRfz5/xyf6fpbTkD8N5W\r\n9lV3OZjvEG9irpl+ujqewy/7xbbfx1RWb94CdAJCOAUtcYeNGAOeM9JF6kFG\r\njyZOPRH0Ss823O4nEylCWVLkIOqmPBKgPtrif7kd3dyWS0pM3GduAdtmAQGk\r\numSphB97A7ummxY4m04Y7jZyW3w7jDlCgaCTYGbZJKIb3w6I1um9JobksY4h\r\nnOwRaGcPqba8NtPhShYGNw9XHFdPGXrLBdMzF5usM06ULOrkRyhrfdm+JB5o\r\nJ5NFE2t7QNnOa79k2ZcX3pMrvJeJ9ydy5fg=\r\n=NPSc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1658745615.0_1658745756506_0.053798428606541826"},"_hasShrinkwrap":false},"1.5.2-alpha.1658756736.0":{"name":"@energyweb/origin-backend-irec-app","version":"1.5.2-alpha.1658756736.0","description":"This is a bootstrap project for Origin API that uses I-REC API connection","main":"dist/js/index.js","scripts":{"start":"nest start -p tsconfig.json","start:dev":"nest start --watch -p tsconfig.json","start:debug":"nest start --debug --watch -p tsconfig.json","start:prod":"node dist/main","prebuild":"npx shx rm -rf dist","build":"yarn build:ts","build:ts":"tsc --project tsconfig.json","prettier":"prettier --write --config-precedence file-override './src/**/*'","clean":"npx shx rm -rf dist uploads","lint":"eslint \"src/**/*{.ts,.tsx}\" --quiet","lint-fix":"eslint \"src/**/*{.ts,.tsx}\" --fix","precommit":"lint-staged","test:mocha":"mocha -r ts-node/register test/*.e2e-spec.ts --timeout 60000 --exit","test:e2e":"yarn test:mocha","build:container:canary":"make build-canary","build:container:latest":"make build-latest"},"bin":{"origin-backend-irec-app":"bin/origin-backend-irec-app"},"homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"license":"MIT","dependencies":{"@energyweb/exchange":"1.13.2-alpha.1658756736.0","@energyweb/exchange-io-erc1888":"1.4.2-alpha.1658756736.0","@energyweb/exchange-irec":"1.2.2-alpha.1658756736.0","@energyweb/issuer":"6.0.2-alpha.1658756736.0","@energyweb/issuer-irec-api":"0.5.2-alpha.1658756736.0","@energyweb/issuer-irec-api-wrapper":"1.1.2-alpha.1658756736.0","@energyweb/origin-backend":"11.2.2-alpha.1658756736.0","@energyweb/origin-backend-core":"8.2.2-alpha.1658756736.0","@energyweb/origin-backend-utils":"1.8.2-alpha.1658756736.0","@energyweb/origin-device-registry-api":"1.1.2-alpha.1658756736.0","@energyweb/origin-device-registry-irec-local-api":"1.1.2-alpha.1658756736.0","@energyweb/origin-energy-api":"1.0.8-alpha.1658756736.0","@energyweb/origin-organization-irec-api":"1.8.2-alpha.1658756736.0","@energyweb/utils-general":"11.2.2-alpha.1658756736.0","@nestjs-modules/mailer":"1.5.1","@nestjs/common":"8.1.1","@nestjs/config":"1.0.2","@nestjs/core":"8.1.1","@nestjs/cqrs":"8.0.0","@nestjs/passport":"8.0.1","@nestjs/swagger":"5.1.4","@nestjs/typeorm":"8.0.2","body-parser":"1.19.1","class-validator":"0.13.2","cors":"2.8.5","mandrill-nodemailer-transport":"1.2.1","swagger-ui-express":"4.2.0","typeorm":"0.2.41"},"devDependencies":{"@nestjs/testing":"8.1.1","@types/cron":"1.7.3","@types/mocha":"9.0.0","@types/node":"14.18.10","@types/supertest":"2.0.11","ganache-core":"2.13.2","mocha":"9.1.3","supertest":"6.1.6","ts-node":"9.1.1","typescript":"4.5.4"},"gitHead":"4048d1b92b0c1dbb60428b419ba5c7e947c8ad1b","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"readme":"<h1 align=\"center\">\n  <br>\n  <a href=\"https://www.energyweb.org/\"><img src=\"https://www.energyweb.org/wp-content/uploads/2019/04/logo-brand.png\" alt=\"EnergyWeb\" width=\"150\"></a>\n  <br>\n  EnergyWeb Origin\n  <br>\n  <h2 align=\"center\">Origin-Backend-IREC-App</h2>\n  <br>\n</h1>\n\n**Origin-Backend-IREC-App** package provides is a runner for a nest.js application that consist of **Origin-Backend** and **Exchange** packages.\n\n## Development\n\nExchange project is currently not meant to be run as a separate nest application. In order to run exchange project please refer to https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app\n\n`yarn start` to start the origin backend and exchange as one application Note: this will not run the migrations for origin-backend and exchange.\n\nDefault TypeOrm configuration requires running PostgreSQL database. The detailed config with .env parameters is:\n\n```\nDB_HOST      - default 'localhost'\nDB_PORT      - default 5432\nDB_USERNAME  - default 'postgres',\nDB_PASSWORD  - default 'postgres',\nDB_DATABASE  - default 'origin',\n```\n\nor\n\n```\nDATABASE_URL  - postgres://{user}:{password}@{host}:{port}/{database}\n```\n\nOther configuration variables\n\n```\nPORT:                                           <PORT to which nest application start listening>\nBACKEND_PORT:                                   <Same as PORT >\nBACKEND_URL:                                    <URL on which this application will be available for e.g https://origin-api-canary.herokuapp.com>\nBLOCKCHAIN_EXPLORER_URL:                        <For e.g for Volta network https://volta-rpc-origin-0a316ab339e3d2ee3.energyweb.org>\nDEPLOY_KEY:                                     <Private key used for Issuer contracts deployment>\nEMAIL_FROM:                                     <Email from for Mandrill API>\nEMAIL_REPLY_TO:                                 <Email reply to for Mandrill API>\nENERGY_API_BASE_URL:                            <URL for Energy API>\nEXCHANGE_ACCOUNT_DEPLOYER_PRIV:                 <Private key used for exchange accounts deployment>\nEXCHANGE_WALLET_PRIV:                           <Private key for wallet used for withdrawals>\nEXCHANGE_WALLET_PUB:                            <Address of the wallet defined in EXCHANGE_WALLET_PRIV>\nISSUER_ID:                                      <Name of the external device id type used in the issuance process for e.g Issuer ID>\nJWT_EXPIRY_TIME:                                <Expiry time for e.g 7 days>\nJWT_SECRET:                                     <Secret>\nMANDRILL_API_KEY:                               <API KEY>\nREGISTRATION_MESSAGE_TO_SIGN:                   <For e.g I register as Origin user>\nUI_BASE_URL:                                    <URL on which UI is deployed for e.g https://origin-ui-canary.herokuapp.com/>\nWEB3:                                           <WEB3 provider url>\nMARKET_UTC_OFFSET:                              <UTC offset in minutes (-120, -60, 0, 60, etc)>\n```\n\n### PostgreSQL installation using Docker\n\n```\ndocker pull postgres\ndocker run --name origin-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres\n```\n\n#### pgAdmin\n\n```\ndocker pull dpage/pgadmin4\ndocker run -p 80:80 \\\n    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \\\n    -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \\\n    -d dpage/pgadmin4\n```\n\n### Swagger\n\nSwagger endpoint can be found at\n\n`http://localhost:3033/api`\n\n### Custom event handlers\n\nIt's possible to handle events emitted by `@energyweb/exchange` in the `@energyweb/origin-backend-app` project. This feature allows 3rd party developers to implement custom event handling logic, additional to existing core event handlers.\n\nCurrently, supported event is `BulkTradeExecutedEvent` which is emitted whenever new trade in the matching engine occurs.\n\nIn order to register custom event handler for this event please follow these steps:\n\n1. Create custom event handler code\n\n```\nimport { BulkTradeExecutedEvent } from '@energyweb/exchange';\nimport { Logger } from '@nestjs/common';\nimport { EventsHandler, IEventHandler } from '@nestjs/cqrs';\n\n@EventsHandler(BulkTradeExecutedEvent)\nexport class NewTradeExecutedEventHandler implements IEventHandler<BulkTradeExecutedEvent> {\n    private readonly logger = new Logger(NewTradeExecutedEventHandler.name);\n\n    async handle(event: BulkTradeExecutedEvent) {\n        this.logger.debug(`Received trade executed events ${JSON.stringify(event)}`);\n    }\n}\n```\n\nNote: This follows the recipe created by Nest.js team which is documented here https://docs.nestjs.com/recipes/cqrs\n\n2. Register your event handler as provider in `origin-app.module.ts`\n\n```\n@Module({})\nexport class OriginAppModule {\n    static register(smartMeterReadingsAdapter: ISmartMeterReadingsAdapter): DynamicModule {\n        return {\n            module: OriginAppModule,\n            imports: [\n                OriginAppTypeOrmModule(),\n                OriginBackendModule.register(smartMeterReadingsAdapter),\n                ExchangeModule\n            ],\n            providers: [NewTradeExecutedEventHandler] // <-- add your event handler here\n        };\n    }\n}\n```\n\nNote: Due to a way in which Nest.js is handling DI, your custom handler class name has to be unique, this means you should not use name taken by core event handler **TradeExecutedEventHandler**\n","readmeFilename":"README.md","_id":"@energyweb/origin-backend-irec-app@1.5.2-alpha.1658756736.0","_nodeVersion":"14.20.0","_npmVersion":"lerna/5.1.6/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-xCX0xnRKCojjxroKxuArMDxpKkZnA86g+DgaVS+7LWouThneyxOHbnJwOU3XyESKdZPUPG+yOc6FvP6mkeS5+w==","shasum":"9d2e4068e8648c7d4c497ca159e06fe3a154581e","tarball":"https://registry.npmjs.org/@energyweb/origin-backend-irec-app/-/origin-backend-irec-app-1.5.2-alpha.1658756736.0.tgz","fileCount":91,"unpackedSize":146535,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWM9W5Wltt4MTU6Gj/CFeMB4XGJKjQpcJK+xFkmNlRzAIhALV3dYtdggmncDOx1v+7ZwvMQSurzc/4g1i9wfz4Xke8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3p8hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpUbhAAo+5tDGMMDxK4CqCvFfPRb09ux+7PweNmVCKfLq0LsQucKn+n\r\nk3IjSlQdTG7/iRp2ZqPDzSW1FXLHJ7DemeYOV2aJpYY8Znn0iF4G0zY9nfed\r\n51jQ08NkOge66C5C2b4tO3KSi2OOrAJ9Stck/jjNYkp37MUz5NBDnznROl2R\r\nIu2jJAtpCvhVqi9lsyYGA7ZKLWhRRliKwYJ93IF03Au9SrKGp1E2AjywFH0D\r\nBSgS27wY1IiuFQ4r8ZK5Lp4I3OOrp7pywvVTZ26tftmkWch3Uktb5dJuaXmB\r\n95LLziq3K1sNg544N0NmYLKVKU+/dgvUFmfEDdI2TYT/6+czwff2JH/DGfVD\r\ngH3pbAzOfwzwN2saOl4Vsa1c3hmWQbo6FWo3mDSdhXLbybxjbERkuF5irGc7\r\n85Vf1U7+ufAZpHBF7SnvLcqG4NQzEVS8QaHDvCsmPm1yGKfbM4kHZvLMg+CW\r\n3nCc0Y17HB6skEHQnk2bmcUqDCufGsXV3hcYs02B9oj0xbhINey/sUQp9Uxz\r\nRoUtFODBgkojO4zeHzG81LypVsl7YHEeQe9KF88j2zaolmJAXSXH+zw5IGE6\r\nMxlTWC/w/RSUQdPa7qzrf9X8SDeqaU8SbBGfFJH8HEkwUJizdalu2JxqmBca\r\nAZCXbz+azcfneexiJ+t48cdRgXNjAV/q0fM=\r\n=X06i\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"energywebdev","email":"core@energyweb.org"},"directories":{},"maintainers":[{"name":"kyleiankian","email":"kyle.ian.kian@gmail.com"},{"name":"energywebdev","email":"core@energyweb.org"},{"name":"aznagy","email":"ngy.am.zs@gmail.com"},{"name":"bagaric","email":"bagaricjos@gmail.com"},{"name":"pkosin","email":"pkosin@protonmail.com"},{"name":"drgorb","email":"micha@roon.me"},{"name":"kroy","email":"kiran.roy@energyweb.org"},{"name":"manihagh","email":"mani.hagh.sefat@energyweb.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/origin-backend-irec-app_1.5.2-alpha.1658756736.0_1658756897294_0.9981710233537797"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-23T08:52:22.207Z","1.0.2-alpha.13398.0":"2021-02-23T08:52:23.003Z","modified":"2024-05-01T02:46:43.558Z","1.0.2-alpha.13419.0":"2021-02-23T10:54:51.479Z","1.0.2-alpha.run5.0":"2021-02-24T07:59:41.669Z","1.0.2-alpha.1614177077.0":"2021-02-24T14:42:45.925Z","1.0.2-alpha.1614247857.0":"2021-02-25T10:23:48.244Z","1.0.2-alpha.1614250414.0":"2021-02-25T11:08:01.008Z","1.0.2-alpha.1614256614.0":"2021-02-25T12:48:33.856Z","1.0.2-alpha.1614334093.0":"2021-02-26T10:18:55.679Z","1.0.2-alpha.1614394992.0":"2021-02-27T03:16:07.779Z","1.0.2-alpha.1614399731.0":"2021-02-27T04:34:06.018Z","1.0.2-alpha.1614414273.0":"2021-02-27T08:34:54.035Z","1.0.2-alpha.1614421250.0":"2021-02-27T10:34:43.278Z","1.0.2-alpha.1614425483.0":"2021-02-27T11:44:28.981Z","1.0.2-alpha.1614429351.0":"2021-02-27T12:46:35.040Z","1.0.2-alpha.1614432717.0":"2021-02-27T13:46:00.078Z","1.0.2-alpha.1614438249.0":"2021-02-27T15:17:25.319Z","1.0.2-alpha.1614441559.0":"2021-02-27T16:11:26.032Z","1.0.2-alpha.1614445444.0":"2021-02-27T17:15:13.678Z","1.0.2-alpha.1614447450.0":"2021-02-27T17:49:35.330Z","1.0.2-alpha.1614451045.0":"2021-02-27T18:50:16.932Z","1.0.2-alpha.1614456300.0":"2021-02-27T20:17:02.936Z","1.0.2-alpha.1614460846.0":"2021-02-27T21:32:52.791Z","1.0.2-alpha.1614467368.0":"2021-02-27T23:20:11.736Z","1.0.2-alpha.1614473654.0":"2021-02-28T01:07:23.421Z","1.0.2-alpha.1614480351.0":"2021-02-28T02:57:33.261Z","1.0.2-alpha.1614484730.0":"2021-02-28T04:10:10.282Z","1.0.2-alpha.1614505253.0":"2021-02-28T09:54:35.017Z","1.0.2-alpha.1614586578.0":"2021-03-01T08:31:20.544Z","1.0.2-alpha.1614678496.0":"2021-03-02T10:01:54.527Z","1.0.2-alpha.1614696513.0":"2021-03-02T15:04:28.989Z","1.0.2-alpha.1614754787.0":"2021-03-03T07:14:26.188Z","1.0.2-alpha.1614762960.0":"2021-03-03T09:29:03.308Z","1.0.2-alpha.1614769373.0":"2021-03-03T11:16:55.848Z","1.0.2-alpha.1614796457.0":"2021-03-03T18:49:49.265Z","1.0.2-alpha.1614807180.0":"2021-03-03T21:47:54.093Z","1.0.2-alpha.1614846632.0":"2021-03-04T08:43:34.301Z","1.0.2-alpha.1614853934.0":"2021-03-04T10:46:37.172Z","1.0.2-alpha.1614872469.0":"2021-03-04T15:53:21.300Z","1.0.2-alpha.1614940330.0":"2021-03-05T10:45:53.487Z","1.0.2-alpha.1615000967.0":"2021-03-06T03:35:45.025Z","1.0.2-alpha.1615009323.0":"2021-03-06T05:56:22.471Z","1.0.2-alpha.1615022514.0":"2021-03-06T09:37:10.145Z","1.0.2-alpha.1615031418.0":"2021-03-06T12:05:04.851Z","1.0.2-alpha.1615035823.0":"2021-03-06T13:17:26.319Z","1.0.2-alpha.1615040875.0":"2021-03-06T14:40:43.760Z","1.0.2-alpha.1615049775.0":"2021-03-06T17:10:37.059Z","1.0.2-alpha.1615058028.0":"2021-03-06T19:26:06.479Z","1.0.2-alpha.1615066487.0":"2021-03-06T21:48:50.264Z","1.0.2-alpha.1615075473.0":"2021-03-07T00:18:42.504Z","1.0.2-alpha.1615081588.0":"2021-03-07T01:59:57.308Z","1.0.2-alpha.1615088220.0":"2021-03-07T03:49:20.036Z","1.0.2-alpha.1615096656.0":"2021-03-07T06:12:14.012Z","1.0.2-alpha.1615106057.0":"2021-03-07T08:48:09.779Z","1.0.2-alpha.1615128697.0":"2021-03-07T15:08:37.735Z","1.0.2-alpha.1615134610.0":"2021-03-07T16:43:28.190Z","1.0.2-alpha.1615148139.0":"2021-03-07T20:29:38.177Z","1.0.2-alpha.1615153627.0":"2021-03-07T22:02:11.578Z","1.0.2-alpha.1615210318.0":"2021-03-08T13:48:04.551Z","1.0.2-alpha.1615223959.0":"2021-03-08T17:36:55.978Z","1.0.2-alpha.1615227897.0":"2021-03-08T18:39:26.672Z","1.0.2-alpha.1615316029.0":"2021-03-09T19:08:42.427Z","1.0.2-alpha.1615404449.0":"2021-03-10T19:42:32.370Z","1.0.2-alpha.1615457332.0":"2021-03-11T10:27:37.095Z","1.0.2-alpha.1615464475.0":"2021-03-11T12:24:36.809Z","1.0.2-alpha.1615471175.0":"2021-03-11T14:16:31.187Z","1.0.2-alpha.1615605482.0":"2021-03-13T03:35:07.627Z","1.0.2-alpha.1615617271.0":"2021-03-13T06:49:32.349Z","1.0.2-alpha.1615626786.0":"2021-03-13T09:29:18.851Z","1.0.2-alpha.1615634831.0":"2021-03-13T11:42:50.894Z","1.0.2-alpha.1615642128.0":"2021-03-13T13:47:11.561Z","1.0.2-alpha.1615650765.0":"2021-03-13T16:08:18.179Z","1.0.2-alpha.1615655248.0":"2021-03-13T17:21:18.392Z","1.0.2-alpha.1615659448.0":"2021-03-13T18:34:52.384Z","1.0.2-alpha.1615667082.0":"2021-03-13T20:41:03.646Z","1.0.2-alpha.1615676457.0":"2021-03-13T23:17:31.571Z","1.0.2-alpha.1615682494.0":"2021-03-14T00:57:31.423Z","1.0.2-alpha.1615688950.0":"2021-03-14T02:45:32.507Z","1.0.2-alpha.1615696525.0":"2021-03-14T04:52:13.414Z","1.0.2-alpha.1615714247.0":"2021-03-14T09:46:19.674Z","1.0.2-alpha.1615723150.0":"2021-03-14T12:14:43.737Z","1.0.2-alpha.1615727779.0":"2021-03-14T13:31:54.476Z","1.0.2-alpha.1615736131.0":"2021-03-14T15:51:12.341Z","1.0.2-alpha.1615742997.0":"2021-03-14T17:47:31.474Z","1.0.2-alpha.1615749869.0":"2021-03-14T19:41:05.369Z","1.0.2-alpha.1615760419.0":"2021-03-14T22:36:36.911Z","1.0.2-alpha.1615769524.0":"2021-03-15T01:09:09.257Z","1.0.2-alpha.1615777085.0":"2021-03-15T03:15:23.497Z","1.0.2-alpha.1615784077.0":"2021-03-15T05:11:19.471Z","1.0.2-alpha.1615792454.0":"2021-03-15T07:32:02.220Z","1.0.2-alpha.1615803094.0":"2021-03-15T10:25:51.863Z","1.0.2-alpha.1615812452.0":"2021-03-15T13:03:41.868Z","1.0.2-alpha.1615815645.0":"2021-03-15T13:57:11.229Z","1.0.2-alpha.1615817314.0":"2021-03-15T14:26:28.724Z","1.0.2-alpha.1615830332.0":"2021-03-15T18:01:34.949Z","1.0.2-alpha.1615906536.0":"2021-03-16T15:12:05.403Z","1.0.2-alpha.1615992217.0":"2021-03-17T15:02:08.646Z","1.0.2-alpha.1616078864.0":"2021-03-18T15:06:19.742Z","1.0.2-alpha.1616081917.0":"2021-03-18T15:56:15.608Z","1.0.2-alpha.1616089562.0":"2021-03-18T18:02:41.366Z","1.0.2-alpha.1616151730.0":"2021-03-19T11:19:35.658Z","1.0.2-alpha.1616156720.0":"2021-03-19T12:43:11.488Z","1.0.2-alpha.1616208888.0":"2021-03-20T03:10:23.689Z","1.0.2-alpha.1616214242.0":"2021-03-20T04:39:56.185Z","1.0.2-alpha.1616230912.0":"2021-03-20T09:20:24.269Z","1.0.2-alpha.1616234561.0":"2021-03-20T10:18:59.002Z","1.0.2-alpha.1616237909.0":"2021-03-20T11:14:35.952Z","1.0.2-alpha.1616242094.0":"2021-03-20T12:24:14.439Z","1.0.2-alpha.1616246159.0":"2021-03-20T13:32:43.768Z","1.0.2-alpha.1616255628.0":"2021-03-20T16:10:50.130Z","1.0.2-alpha.1616261894.0":"2021-03-20T17:54:00.122Z","1.0.2-alpha.1616270728.0":"2021-03-20T20:22:26.745Z","1.0.2-alpha.1616275164.0":"2021-03-20T21:35:25.525Z","1.0.2-alpha.1616280044.0":"2021-03-20T22:58:35.390Z","1.0.2-alpha.1616284362.0":"2021-03-21T00:08:56.864Z","1.0.2-alpha.1616289290.0":"2021-03-21T01:29:37.683Z","1.0.2-alpha.1616398974.0":"2021-03-22T08:00:11.758Z","1.0.2-alpha.1616494791.0":"2021-03-23T10:34:49.622Z","1.1.0":"2021-03-23T13:18:48.785Z","1.1.1-alpha.1616506929.0":"2021-03-23T14:00:12.445Z","1.1.1-alpha.1616510944.0":"2021-03-23T15:07:10.692Z","1.1.1-alpha.1616512712.0":"2021-03-23T15:36:58.125Z","1.1.1-alpha.1616569951.0":"2021-03-24T07:29:35.436Z","1.1.1-alpha.1616571401.0":"2021-03-24T07:52:21.717Z","1.1.1-alpha.1616575982.0":"2021-03-24T09:11:06.357Z","1.1.1-alpha.1616591240.0":"2021-03-24T13:24:43.159Z","1.1.1-alpha.1616687405.0":"2021-03-25T16:07:36.026Z","1.1.1-alpha.1616690130.0":"2021-03-25T16:51:31.723Z","1.1.1-alpha.1616746569.0":"2021-03-26T08:33:33.229Z","1.1.1-alpha.1616755491.0":"2021-03-26T11:00:43.753Z","1.1.1-alpha.1618315780.0":"2021-04-13T12:21:58.652Z","1.1.1-alpha.1618478372.0":"2021-04-15T09:21:24.732Z","1.1.1-alpha.1618846122.0":"2021-04-19T15:30:48.721Z","1.1.1-alpha.1618925427.0":"2021-04-20T13:32:17.353Z","1.1.1-alpha.1619008831.0":"2021-04-21T12:42:13.767Z","1.1.1-alpha.1620996803.0":"2021-05-14T12:55:05.394Z","1.1.1-alpha.1621325564.0":"2021-05-18T08:14:49.901Z","1.1.1-alpha.1621586076.0":"2021-05-21T08:36:29.125Z","1.1.1-alpha.1623073145.0":"2021-06-07T13:41:12.801Z","1.1.1-alpha.1623082713.0":"2021-06-07T16:20:00.987Z","1.1.1-alpha.1623138698.0":"2021-06-08T07:54:12.278Z","1.1.1-alpha.1625573089.0":"2021-07-06T12:19:21.182Z","1.1.1-alpha.1625651017.0":"2021-07-07T09:45:04.695Z","1.1.1-alpha.1626129410.0":"2021-07-12T22:39:52.905Z","1.1.1-alpha.1626133870.0":"2021-07-12T23:53:44.185Z","1.1.1-alpha.1626427098.0":"2021-07-16T09:19:26.483Z","1.1.1-alpha.1626693085.0":"2021-07-19T11:12:27.607Z","1.1.1-alpha.1627918279.0":"2021-08-02T15:35:25.473Z","1.1.1-alpha.1629812330.0":"2021-08-24T13:39:34.366Z","1.1.1-alpha.1629978728.0":"2021-08-26T11:52:51.162Z","1.1.1-alpha.1630314993.0":"2021-08-30T09:17:19.782Z","1.2.0":"2021-08-30T09:50:41.112Z","1.2.1-alpha.1631706872.0":"2021-09-15T11:55:35.286Z","1.3.0":"2021-09-17T09:37:33.801Z","1.3.1-alpha.1631878057.0":"2021-09-17T11:28:57.550Z","1.3.1-alpha.1632573029.0":"2021-09-25T12:31:07.877Z","1.3.1-alpha.1634225870.0":"2021-10-14T15:38:36.031Z","1.3.1-alpha.1634310900.0":"2021-10-15T15:16:32.325Z","1.3.1-alpha.1634635079.0":"2021-10-19T09:18:36.429Z","1.3.1-alpha.1634803278.0":"2021-10-21T08:04:49.436Z","1.3.1-alpha.1635152195.0":"2021-10-25T08:57:16.324Z","1.3.1-alpha.1635237487.0":"2021-10-26T08:38:50.575Z","1.3.1-alpha.1635238834.0":"2021-10-26T09:01:23.003Z","1.3.1-alpha.1635328054.0":"2021-10-27T09:48:31.411Z","1.3.1-alpha.1635420812.0":"2021-10-28T11:34:18.675Z","1.3.1-alpha.1635843269.0":"2021-11-02T08:55:06.704Z","1.3.1-alpha.1635844951.0":"2021-11-02T09:23:27.950Z","1.3.1-alpha.1636106793.0":"2021-11-05T10:07:14.308Z","1.3.1-alpha.1636552048.0":"2021-11-10T13:48:13.912Z","1.3.1-alpha.1636615994.0":"2021-11-11T07:33:54.941Z","1.3.1-alpha.1637838431.0":"2021-11-25T11:09:18.579Z","1.3.1-alpha.1637852659.0":"2021-11-25T15:05:27.219Z","1.4.0":"2021-12-24T14:04:06.377Z","1.5.0":"2021-12-30T15:09:05.444Z","1.5.1-alpha.1642431088.0":"2022-01-17T14:52:32.331Z","1.5.1":"2022-01-18T11:20:37.999Z","1.5.2-alpha.1646056819.0":"2022-02-28T14:00:58.373Z","1.5.2-alpha.1646058469.0":"2022-02-28T14:28:27.990Z","1.5.2-alpha.1646656455.0":"2022-03-07T12:34:49.615Z","2.0.0":"2022-03-15T16:25:04.150Z","2.0.1":"2022-03-16T12:21:03.387Z","2.0.2-alpha.1650636678.0":"2022-04-22T14:11:51.228Z","1.5.2-alpha.1651149594.0":"2022-04-28T12:40:34.472Z","1.5.2-alpha.1651489311.0":"2022-05-02T11:02:27.009Z","1.5.2-alpha.1654697952.0":"2022-06-08T14:19:59.283Z","1.5.2-alpha.1657642980.0":"2022-07-12T16:25:05.877Z","1.5.2-alpha.1658745615.0":"2022-07-25T10:42:36.639Z","1.5.2-alpha.1658756736.0":"2022-07-25T13:48:17.578Z"},"maintainers":[{"email":"core@energyweb.org","name":"energywebdev"},{"email":"ngy.am.zs@gmail.com","name":"aznagy"},{"email":"bagaricjos@gmail.com","name":"bagaric"},{"email":"pkosin@protonmail.com","name":"pkosin"},{"email":"micha@roon.me","name":"drgorb"},{"email":"kiran.roy@energyweb.org","name":"kroy"},{"email":"mani.hagh.sefat@energyweb.org","name":"manihagh"}],"description":"This is a bootstrap project for Origin API that uses I-REC API connection","homepage":"https://github.com/energywebfoundation/origin/tree/master/packages/origin-backend-irec-app#readme","repository":{"type":"git","url":"git+https://github.com/energywebfoundation/origin.git"},"author":{"name":"EnergyWeb DevHub GmbH; Joseph Bagaric, joseph.bagaric@energyweb.org; Piotr Kosinski, piotr.kosinski@energyweb.org"},"bugs":{"url":"https://github.com/energywebfoundation/origin/issues"},"license":"MIT","readme":"","readmeFilename":""}