{"_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","_rev":"20-cd466f6256143b35683dd18e90b69e7b","time":{"0.6.1":"2021-08-03T11:53:15.626Z","created":"2021-08-09T06:45:20.094Z","0.6.3":"2021-08-09T06:45:20.386Z","modified":"2022-04-05T07:09:34.507Z","0.6.4":"2021-08-09T06:52:38.244Z","0.6.5":"2021-08-09T07:33:10.311Z","0.6.6":"2021-08-09T08:04:08.078Z","0.6.7":"2021-08-09T09:12:22.984Z","0.6.8":"2021-08-09T10:07:05.962Z","0.6.9":"2021-08-11T06:11:40.740Z","0.7.1-scope-changed.ab167ba4.5":"2021-08-11T07:16:08.656Z","0.7.1-scope-changed.2eda5046.6":"2021-08-11T07:53:09.446Z","0.6.10":"2021-08-11T08:06:30.673Z","0.6.11":"2021-08-11T09:10:06.378Z","0.6.12":"2021-08-12T06:57:29.353Z","0.6.13":"2021-08-12T09:05:11.393Z","0.6.14":"2021-08-12T11:20:14.502Z","0.9.3":"2021-09-21T11:30:48.570Z","0.9.4":"2021-09-23T09:09:22.352Z"},"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","dist-tags":{"latest":"0.9.4","scope-changed":"0.7.1-scope-changed.2eda5046.6"},"versions":{"0.6.3":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.3","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.3","@elenaizaguirre/cactus-core":"0.6.3","@elenaizaguirre/cactus-core-api":"0.6.3","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.3","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"3255c453b21c5900a90436d6124482f43778e70e","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.3","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-PxN/et4McLNlbv3vTGRXyjP70+aJ3OyvNWVXa7yw+tuVvm6iqt48sSyNhkJOao8RayhuD4CTNRDs9YfFMoTXjA==","shasum":"7c25bf6d0be258c4d88c4577d08ce0627b12fe4d","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.3.tgz","fileCount":51,"unpackedSize":2375739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEM8ACRA9TVsSAnZWagAAhKkQAI7UvjXNRVAj2Mu6HEUO\nRZpjhJBRwd8IqoMBoS8+pgtD/Wtq602pPD1oiPl9aNR0krzxVTNUjjFI+Mv6\ntN2mGY0Jv29BacwdxgfqF9l+/0lQQsHoM1hwzLk57OMbmIRrGpoKZe2z34N9\nBMXlvZQkRKbrMltAXd6kvSQJsNHosJk6NzWtDUwbHfFTKRezUK9IcQQ2uKvu\nT2Qi92WzoU4JcByR2214nuUhgtJHpJZ0unsRXs7zNvodWYz4tZo2xVleMKft\njOHCxr+0y+Ey9hpLKvcuNqa3SXTsyXyOpT5KtxDRwep3tjmzpbaasapExtes\n5VoCtWYfSEKuCTKgUEKLjPPD8DZosRQqckELz6DxGfr0j7A9VO1yjJJJpVgm\nS61PP0xBKgfDjaXkTRd7ePthZVbGnPkmcDuqJaNT5o4A4anyYOfPqwZwcMUd\njgWZDCSR7CxaBpn2GszVtm0Ulijb+9KLMRCIw3/kfJzopEL5Lt1YhWJRG6ng\nGS8sTENVVRQcrmmM0z4bavwsIYQpzzi08CxIMK8PML+Tf8YPQLlqELNaKYd5\nbBk8T2/M0QGUB4deoQWNlZcw1uZUjFjGRRkvFMdtUwxJa/Sa9BJH7uMOjhSv\n/SZ/jhkJDmVGRmK/v9z8+HrVQRZ4tcbiluKLh5uHYqPyXUxhNmnq4wxqd7T4\nGCaE\r\n=nXvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK34mPzGCs9FENcY03xyJ0T71YD3/U18WqKzuwJ+eO/gIgWEUzs3/p6ue0NRdvcm+FkyaAlT0opIgCF5peWzrkyLc="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.3_1628491520179_0.07828124407783177"},"_hasShrinkwrap":false},"0.6.4":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.4","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.4","@elenaizaguirre/cactus-core":"0.6.4","@elenaizaguirre/cactus-core-api":"0.6.4","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.4","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"ed7600489eb811e4114c57ec255a41c71538934d","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.4","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-+9Ss2E3Jz8eEtGfm5dM1nz+Y3WSLYrd4JHtkCJA3cAMp6kHYkCY2itGOPFcuYTyl+CslZAA0ulhax2d6CauIGw==","shasum":"246cb9ce5416017034989ab32940b71c34cf5012","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.4.tgz","fileCount":51,"unpackedSize":2375739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhENC2CRA9TVsSAnZWagAALygP/37WV2HlNZ5wXhiGayDq\najhyhcNeRqFhDreBMlRkwMu81KLoN+jE8+809ShDL9WTFwT1g4Bt8iGuV0KI\njjzjfbLwZMNt1E2bqwK2uLUS/cCtgOkhu/zXSIBL11enwuaNGUg30qAt9ls2\nysfT6PjUF/u2L07mE7Fus86FLgHhDNFUaHSLH6fUA232sDdZqwjZwN91WM4h\nCdkA9ag+AZ1wrK7xyTB0jX+vTrKYxdiggjbJEE4ai/odeTPKqDpZERa8U7SK\nOUAhIMEPZAXR0cMuFTbt8n724b740g5PxInE1wfkikzTkQ1UmvEu4cxrBn9i\nbxdQR5yLFSQx56HCzb5xfOwCGdgSxZUB7FDL7IYG9JMQJexFPEGOT7bJqr9v\n6ig6sRRTei+PzKHnyJpnCx/0YtMj7bpc9hxbtPM5kDO8CkfWGBemfu8FoEh+\nlviMZQOyy9pk6hVjHxVzqySCRGrfGkbB+OBsGMxCP9kbWP3jv6TanpfF79bz\nWUCt3m2bX+DlSAd247oXLNFNRoHhL85wFjgm4xLW0PjpuDM5nXFxCowJc9D1\nCctCDIdE+joVzxutYR4fOVmcXRMO0ymAkWoVYx1K3fiFm0epoDqHMZtF1r7L\nQjdWaqV2meCdggMHn2EjZM10+fJ8K+PbVAT36PMSECd6FNZkjmPeoV+13Q6V\nW27K\r\n=+q5q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDe7yFFb6SEP/GFmsVKOIQyHOhbvCAQ8Zmh/utKkk6FLAiEAjaxzG7rqrCPObAKCj+qtxalTkXzEcT0X97X3TBOyY78="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.4_1628491958062_0.0614686336660728"},"_hasShrinkwrap":false},"0.6.5":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.5","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.5","@elenaizaguirre/cactus-core":"0.6.5","@elenaizaguirre/cactus-core-api":"0.6.5","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.5","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"b1a024148ba6fd87bcfe1a41a0970830798d6e91","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.5","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-YmCQ8oOlQyLwNdwvFbUvCDg/0WKID1AKmg0fDcahAyeldUKejV0Mzg+oQ+/hnxSTSJI2CnkQSb4ADOr60x0LrQ==","shasum":"2ec6f88bb94c4100720d09fc6b3ea38887250339","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.5.tgz","fileCount":51,"unpackedSize":2375739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhENo2CRA9TVsSAnZWagAAJukP/2ieQOgRKcn+2B5Wgl6r\nZe3X3/O0Ac32nGuBjdyIC56pc4kFGUnoAosEz38j2a99/Ny9Tj45irWWDg9S\ndjG85d5Lkeyy5jh/O+ePj38M9Yl98l5dl0lTu4CPpzZcYjXa10A5AVRhOUvx\n9HJX3ZRQfBOOCmHKoeg1SxI/LYujE7IGhrAAC+0opDspZotisVMDbR356tRB\nAjoZ//N4rTMSkJV5o49Lzz5r7SBS3KKZkDuPy0v1sGbBUlXTEeMIwwN/tmap\nnn/P3INO0PRQ22SGTltnfOVjJVsJy9YcHZYn0x2fpT/uho+cRmlwlHIb+mXF\n/RM5ZfMdQEe+Hz0p22ZHD71NSwWpC0+n5n8rfa9nP8gd8iQhIBx++WGnoGzB\ni5er3SbznrDScC28sDZw1jVCqwQXXzKET0d28rM4xu4S+hfFZMRClWunjNXt\nUan8+h8hn5XB48VkmAY4kDAviQwi5iYESNuVQ6FSOwmcN8y5muLpGNONqtuA\n5NDr1whlSaS3VH8O3y1Dh6Pn5XbgnxsH2PY2k457KHajHuqQkcTBAVwvdvoc\nmgHAmNBSypNq+o90I+ROOs7V1GRuknQkoZeWOgl1eiQZUMICbhYi9zEb92Ae\nesOkTfxw+v679PP3kmfQoeDM+sM11N0UyiKGnnVMuWMggiMOnr1MgWBiANej\nQNT8\r\n=fpRo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHLT9gB7DfFNF+sj4bB2MiRDKK5Yr6s0FNYb2bQojDOsAiArjXZI3L0fk5QfmGuQVXEBQua1BgGSZ7sg4FEzk9VOhA=="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.5_1628494390118_0.029354808641155028"},"_hasShrinkwrap":false},"0.6.6":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.6","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.6","@elenaizaguirre/cactus-core":"0.6.6","@elenaizaguirre/cactus-core-api":"0.6.6","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.6","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"faa1059634d121fdc5f43e5afa3640bbd8c25b49","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.6","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-IROMFMWYyFiNeKZyyWMqzYX7KhoQdm5SewfLS2+mFubwBmALcJ4DM7CUOBbUTZFlib8WOLhyzIv5vkINuup51A==","shasum":"d422cefc175687a48ee51ffb228721990efb6f29","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.6.tgz","fileCount":51,"unpackedSize":2375739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEOF4CRA9TVsSAnZWagAAkmwP/jECgWYb2yJhc/RxlCOR\nyTEeJxXwV2MNMvNFwwlwFFa66zDZz19jYXKAItgKeBGC6c50rRv3OcbKsJO0\nc87Bjn/uoB5vPxN60EX5mHH8Zm+NE8mDNCv82Kxpkxgfn/siW8kdfT6pwszz\nrCdWWhrpgiQenZ1DKT4iusy86U6RTVhqDVuwth/lDs6JoHO6vJhriLudO3Ck\nJB0/lExsv72jvadD0j9KSBHRJBqrXX/EthHp4naUZHUzzXA3RvTZlRQbU41G\n5bW7l3a0OvuuhbglX+XLC11D6tSgJPsZ+/TLiQPokcRmKrWXw3mXigIi6wbo\nZvQdzzZQZU64X2mzpAgMOsY7xOc/JvdOa2FYrGC1I6HXk52rz/MYbD5sdmgZ\nJuFBJoPeBySrVw5TIsOXdZXi1zF8pxtEc6/tOknRR0CvSk/ad4bbjpvrCATn\nTWHjIwfsqZDMiLAxGwR3ScCAe3mrRFTnzb0WvI26DkAsk9ZGLrNDFo4eVIZY\nDRdad7eosKtO9Q6Kv7UmzFFe0LqjQ2Fb1R64bJYD0CdB6DH6oJF26lLjTxBx\n+N6UhRzQON1YNcsiAMnTutqWQf9bLY7omYv3mvyeLP8WHNSJbE0rlD/t/kuY\nuu4QBX5EI0WKPwUfwaLDyapJg2lW+sI6Im1TAneDHWk6ZIarsA+h0ZPvCpMt\nf5Gi\r\n=9g1q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtrsaSwP9DKw4oP6eAKUijwd94jR/fWBWNMu1ghruj/QIgZLoZRKoHHHN8VMVZPB12GjFyiU78EChIJNJfEzLw5Ug="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.6_1628496247713_0.6401403311106526"},"_hasShrinkwrap":false},"0.6.7":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.7","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.7","@elenaizaguirre/cactus-core":"0.6.7","@elenaizaguirre/cactus-core-api":"0.6.7","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.7","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"06570ef0999623cc028b7113f09ac710f6443f93","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.7","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-CU82h+mbm88PUsdpjql12qFFmCm6czRDy+9GL/F1DFMSSLzpup5oibstMzmhjFb7s2CzRU+TcJ+c9uHclsD1rA==","shasum":"cc67de2a03482b60d1b0bba7ecc160273cef5af8","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.7.tgz","fileCount":51,"unpackedSize":2375739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEPF2CRA9TVsSAnZWagAAeOIP/3patB5/ryZRQ1ApBG0Y\nndZKHbfncspk4M16mhmMHci/OdqsebJ98fpEcgb6y8HaiBari1OfAkvqmu7R\nSim12XxZwrTAlV84krqbLGLrjyuDuHVguM/hQGcZ4qRvHqsLOg5cwiaz/K90\n1u1za2IBPbv+zmrp26r39Jfwaz7mbpkh1tDgEHgb9Z4iIVvp+fR1PFjbRP+Q\nPNjIb6spNhCa6i497F4hY1QP2KaLs3/lHCfHiSFOWQIJ8hszM5crN0ylujd9\nuSfqC1YeRw/VijAsvsIwKY7zNiTe9wBUUqNMSfLpAzqB/J1/Ij9RbYOMmLgD\nC+1dxr0FD0wHbOuqRCIPKq8diUp8FE/90j/ExT0vSQd4HKC9xiUIS1zTgZGJ\nogkb4YYwm26VzqYrMJw2xG821okmkj/WpVRNQKzdBASt3CacbKXQb8DYjwYv\n8rNAbPSr6XKW9LPiysE+8rfJK3lEEYSj8IbhOeFW32WX+ocdkRm66pPVKDzF\nwwgQzkflp7zUl7UXapA+vNDnEUTUaiis+2s3gXywGNoD9Ki54S3pACHYVLVp\naGjt66geSuYIeX23bjuc5z82TIqotbpvp6GT32R4SyCEdssKJuA7+374I3n4\nVnp6vkfCAsM9s86QP64g1dT7tqstMLOzOlBafhwvcHm5EzyVK7OLVeu1z1MP\nndoD\r\n=CIJd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo6srwFOyHB3ybHCSHSImJMQGtbrh514t+6KDcanicaQIgVrhHICMwrq5gJwckdi3viPAxpTRauTVCuvIEs1LJmpM="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.7_1628500342799_0.2812258174518316"},"_hasShrinkwrap":false},"0.6.8":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.8","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.8","@elenaizaguirre/cactus-core":"0.6.8","@elenaizaguirre/cactus-core-api":"0.6.8","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.8","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"91cec1e5c803270d3649a2954d824af610ed0eb9","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.8","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-bPRYyTwj1t9BriFs3VeG7s+FrW7OZJHXyPq35Z4mH8F8UMB3AHXrVd5arO17sbRhok8TVX56xnbpsSIGc8hvPA==","shasum":"a33a5f979f12efc5a6d9578db9eb4ec4442698a5","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.8.tgz","fileCount":51,"unpackedSize":2375739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEP5JCRA9TVsSAnZWagAANsUP/2h1ZRhcQjlkQafd39dj\nGh4tmszLjSp5ijrx+wpsLvTU9hapuodtzpxqhZcS4MOryfkNNY6m5Aelg25/\nuTQhHSD5KJZgUXQEfQGimKCob38JArOAHS3mcaK2VAY9iEcPlUvfzusnloHJ\n9VYeuj574SHIH9Th39ZZNRU2d2jrcp85KP6d5geoNTS5gSwv0K0r9TP8Eh1N\ntMZp/Rzz6KSPIvaBtODkHyjMHOqBpwIY1gJCWPl4POiKIf2dA440QeKXIs7a\n+NLNojLOsouIobsGEIiPzlh6eUWyOSuq2W6T3CAwELtcCe8LgnO0zF/kgS/6\nfocYPiNpljFZZR7vkTRp03fpMZpYr/PQTQJrgXK6wEaKULAWS6dCJQ83BMYa\n2L5kDGr+xLFhlvYBVlNbtguMQ57WRpEEItJuzb5AbMphYl2ZhWmF8r1cNxvd\nSvB1Tmfpk/X0ihCf3jmvCjTUtHwQo8zsCHuUeMF0lsFPI0+zOQsAOOvn+KEX\nPY+VXgTAisx33BZ3ARKztffg5/CWK19v6EtVXqoiqv91hVLD/uOHLIQ+J9vb\nam1EPmd8RRQ/RebRMVBf49C4qgS4HVMMHj/YnLbaBTS7E6taoKTA/eOpm+x1\nW98IfmyrjWj87LXz3rKqZb2/hW5UQgtmj1QmOrI/j64tGYfGN04kWL2gjUKB\nxcQ5\r\n=WJ0t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDt2SfxQBeJnWxJZYaX2cH2lWE/q0qVj1eaFjd5Y87ktgIgK8QQXtZUJzjcBcDPDydZzcRVD4rOqtPcUMKlPrGE1/w="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.8_1628503625705_0.8430643953019907"},"_hasShrinkwrap":false},"0.6.9":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.9","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.9","@elenaizaguirre/cactus-core":"0.6.9","@elenaizaguirre/cactus-core-api":"0.6.9","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.9","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"3363b29413ac58d71472d84a81c64da323958950","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.9","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-COEnlbkoVw6W7yDbxygOmcCViP/Z7bGxfKpKP1TOdVRafbMDQZ9onNEm3Fe9uETgau/o1XsEZklhJ6ZGfzBCxg==","shasum":"5bc404668c532d6055e9bcb628b55fa51af1bb28","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.9.tgz","fileCount":51,"unpackedSize":2379055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE2ocCRA9TVsSAnZWagAA0l8P/3thT777noI2/AalV1NQ\nQGqLCgT0Cjvs9OhH8RaxywpDwqNFJCqoNz8hAQ2ONB5t5iwO5K8NYC1ge6i0\nk+YgXTH6ruyMNErXj3qTGlmwRyhRoN/l/kN7PMWKv6BpVKK0qDKB5oCrrNbZ\nG0a3Wgkb0Wa8P1xFzfr7dwt4l23XoTRY4hFJ7WiPBwkJZhbu0CGsW/zIHlYB\nEZOx4c1fpIsdlLpXxohujwgomd5+T8kEFFXfExf5EesK7d1UzTTbFF0FwYnw\nalx+mMcxUgV9U+LbBXNyN2Hrhxwg8FZOQcbmpKTIj4UAylCZy0wcxksWfXMG\ny9Dfk21hRrEoBkpCCJ7uD7ltmBibPMREeDI9lV8Gtu9oxw5HLBK8ndxklZLe\nloiQ6GCcZf/5zfc8Y5+wdYzb7M8kd//WoqC3jwzHBVc0lj205oyoAXMlMq6r\n/GQEysxm+pDu6L5m2Osu5HIIuD8L6UUfZfdbi9CuddcYyZ5Obk7csHE4q+Xk\nrH/paxXxSBTch+rYVT3qcxlGI5dZUPRvEDvXbMaaOUMtplXgTBmiiOSfKqZv\nf9GG4dOIQL8tnmvKx9O/2IMLMDgOc9jMcXCvGUBPCVlgPJuvKoaViJlC9WDm\nuWsKK4PugiCnesTnPGWWZqr89hmP22Ll5qHPVwmgrOr91LIq/RIVLPotf8LR\nKiC8\r\n=r728\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+ijRR4fFdvG4edhysDNSXuvLQ3HYU9riv/0m083nDkgIhAJZUu1F0NDQoa1pu1BAWSVMU+opOMZ9G7uIebX14n3nP"}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.9_1628662300508_0.9001263758779872"},"_hasShrinkwrap":false},"0.7.1-scope-changed.ab167ba4.5":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.7.1-scope-changed.ab167ba4.5","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"^0.7.1-scope-changed.ab167ba4.5+ab167ba4","@elenaizaguirre/cactus-core":"^0.7.1-scope-changed.ab167ba4.5+ab167ba4","@elenaizaguirre/cactus-core-api":"^0.7.1-scope-changed.ab167ba4.5+ab167ba4","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"^0.7.1-scope-changed.ab167ba4.5+ab167ba4","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"ab167ba4bf35f442884a56b3cc43ff8a71f78e60","readme":"# `@hyperledger/cactus-plugin-ledger-connector-corda` <!-- omit in toc -->\n\n## Table of Contents <!-- omit in toc -->\n\n- [Summary](#summary)\n- [Concepts](#concepts)\n  - [Contract Invocation JSON DSL](#contract-invocation-json-dsl)\n  - [Expressing Primitive vs Reference Types with the DLS](#expressing-primitive-vs-reference-types-with-the-dls)\n  - [Flow Invocation Types](#flow-invocation-types)\n- [Usage](#usage)\n  - [Invoke Contract (flow) with no parameters](#invoke-contract-flow-with-no-parameters)\n  - [Invoke Contract (flow) with a single integer parameter](#invoke-contract-flow-with-a-single-integer-parameter)\n  - [Invoke Contract (flow) with a custom class parameter](#invoke-contract-flow-with-a-custom-class-parameter)\n  - [Custom Configuration via Env Variables](#custom-configuration-via-env-variables)\n- [Building Docker Image Locally](#building-docker-image-locally)\n- [Example NodeDiagnosticInfo JSON Response](#example-nodediagnosticinfo-json-response)\n- [Monitoring](#monitoring)\n  - [Usage Prometheus](#usage-prometheus)\n  - [Prometheus Integration](#prometheus-integration)\n  - [Helper code](#helper-code)\n        - [response.type.ts](#responsetypets)\n        - [data-fetcher.ts](#data-fetcherts)\n        - [metrics.ts](#metricsts)\n\n## Summary\n\nThe Corda connector is written in Kotlin and ships as a Spring Boot JVM application\nthat accepts API requests and translates those into Corda RPC calls.\n\nDeploying the Corda connector therefore involves also deploying the mentioned JVM\napplication **in addition** to deploying the Cactus API server with the desired\nplugins configured.\n\n## Concepts\n\n### Contract Invocation JSON DSL\n\nOne of our core design principles for Hyperledger Cactus is to have low impact\ndeployments meaning that changes to the ledgers themselves should be kept to a\nminimum or preferably have no need for any at all. With this in mind, we had to\nsolve the challenge of providing users with the ability to invoke Corda flows\nas dynamically as possible within the confines of the strongly typed JVM contrasted\nwith the weakly typed Javascript language runtime of NodeJS.\n\nCorda might release some convenience features to ease this in the future, but\nin the meantime we have the *Contract Invocation JSON DSL* which allows developers\nto specify truly arbitrary JVM types as part of their contract invocation arguments\neven if otherwise these types would not be possible to serialize or deserialize\nwith traditional tooling such as the excellent\n[Jackson JSON Java library](https://github.com/FasterXML/jackson) or similar ones.\n\n### Expressing Primitive vs Reference Types with the DLS\n\nThe features of the DSL include expressing whether a contract invocation parameter\nis a reference or a primitive JVM data types.\nThis is a language feature that Javascript has as well to some extent, but for\nthose in need of a refresher, here's a writeup from a well known Q/A website that\nI found on the internet: [What's the difference between primitive and reference types?\n](https://stackoverflow.com/a/32049775/698470)\n\nTo keep it simple, the following types are primitive data types in the\nJava Virtual Machine (JVM) and everything else not included in the list below\ncan be safely considered a reference type:\n- boolean\n- byte\n- short\n- char\n- int\n- long\n- float\n- double\n\nIf you'd like to further clarify how this works and feel like an exciting adventure\nthen we recommend that you dive into the source code of the\n[deserializer implementation of the JSON DSL](https://github.com/hyperledger/cactus/blob/main/packages/cactus-plugin-ledger-connector-corda/src/main-server/kotlin/gen/kotlin-spring/src/main/kotlin/org/hyperledger/cactus/plugin/ledger/connector/corda/server/impl/JsonJvmObjectDeserializer.kt) and take a look at the following points of interest\nin the code located there:\n- `val exoticTypes: Map<String, Class<*>>`\n- `fun instantiate(jvmObject: JvmObject)`\n\n### Flow Invocation Types\n\nCan be **dynamic** or **tracked dynamic** and the corresponding enum values\nare defined as:\n\n```typescript\n/**\n * Determines which flow starting method will be used on the back-end when invoking the flow. Based on the value here the plugin back-end might invoke the rpc.startFlowDynamic() method or the rpc.startTrackedFlowDynamic() method. Streamed responses are aggregated and returned in a single response to HTTP callers who are not equipped to handle streams like WebSocket/gRPC/etc. do.\n * @export\n * @enum {string}\n */\nexport enum FlowInvocationType {\n    TRACKEDFLOWDYNAMIC = 'TRACKED_FLOW_DYNAMIC',\n    FLOWDYNAMIC = 'FLOW_DYNAMIC'\n}\n```\n\n[Official Corda Java Docs - startFlowDynamic()](https://api.corda.net/api/corda-os/4.7/html/api/kotlin/corda/net.corda.core.messaging/-corda-r-p-c-ops/start-flow-dynamic.html)\n\n[Official Corda Java Docs - startTrackedFlowDynamic()](https://api.corda.net/api/corda-os/4.7/html/api/kotlin/corda/net.corda.core.messaging/-corda-r-p-c-ops/start-tracked-flow-dynamic.html)\n\n\n## Usage\n\nTake a look at how the API client can be used to run transactions on a Corda ledger:\n`packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/jvm-kotlin-spring-server.test.ts`\n\n\n### Invoke Contract (flow) with no parameters\n\nBelow, we'll demonstrate invoking a simple contract with no parameters.\n\n**The contract source:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\nclass SomeCoolFlow {\n  // constructor with no arguments\n  public SomeCoolFlow() {\n    this.doSomething();\n  }\n\n  public doSomething(): void {\n    throw new RuntimeException(\"Method not implemented.\");\n  }\n}\n```\n\n**Steps to build your request:**\n\n1. Find out the fully qualified class name of your contract (flow) and set this as the value for the request parameter `flowFullClassName`\n2. Decide on your flow invocation type which largely comes down to answering the question of: Does your invocation follow a request/response pattern or more like a channel subscription where multiple updates at different times are streamed to the client in response to the invocation request? In our example we assume the simpler request/response communication pattern and therefore will set the `flowInvocationType` to `FlowInvocationType.FLOWDYNAMIC`\n3. Invoke the flow via the API client with the `params` argument being specified as an empty array `[]`\n    ```typescript\n    import { DefaultApi as CordaApi } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n    import { FlowInvocationType } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n\n    const apiUrl = \"your-cactus-host.example.com\"; // don't forget to specify the port if applicable\n    const apiClient = new CordaApi({ basePath: apiUrl });\n\n    const res = await apiClient.invokeContractV1({\n      flowFullClassName: \"com.example.organization.samples.application.flows.SomeCoolFlow\",\n      flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n      params: [],\n      timeoutMs: 60000,\n    });\n    ```\n\n### Invoke Contract (flow) with a single integer parameter\n\nBelow, we'll demonstrate invoking a simple contract with a single numeric parameter.\n\n**The contract source:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\nclass SomeCoolFlow {\n  // constructor with a primitive type long argument\n  public SomeCoolFlow(long myParameterThatIsLong) {\n    // do something with the parameter here\n  }\n}\n```\n\n**Steps to build your request:**\n\n1. Find out the fully qualified class name of your contract (flow) and set this as the value for the request parameter `flowFullClassName`\n2. Decide on your flow invocation type. More details at [Invoke Contract (flow) with no parameters](#invoke-contract-flow-with-no-parameters)\n3. Find out what is the fully qualified class name of the parameter you wish to pass in. You can do this be inspecting the sources of the contract itself. If you do not have access to those sources, then the documentation of the contract should have answers or the person who authored said contract. In our case here the fully qualified class name for the number parameter is simply `long` because it is a primitive data type and as such these can be referred to in their short form, but the fully qualified version also works such as: `java.lang.Long`.\nWhen in doubt about these, you can always consult the [official java.lang.Long Java Docs](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Long.html)\nAfter having determined the above, you can construct your first `JvmObject` JSON object as follows in order to pass in the number `42` as the first and only parameter for our flow invocation:\n    ```json\n    params: [\n      {\n        jvmTypeKind: JvmTypeKind.PRIMITIVE,\n        jvmType: {\n          fqClassName: \"long\",\n        },\n        primitiveValue: 42,\n      }\n    ]\n    ```\n1. Invoke the flow via the API client with the `params` populated as explained above:\n    ```typescript\n    import { DefaultApi as CordaApi } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n    import { FlowInvocationType } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n\n    // don't forget to specify the port if applicable\n    const apiUrl = \"your-cactus-host.example.com\";\n    const apiClient = new CordaApi({ basePath: apiUrl });\n\n    const res = await apiClient.invokeContractV1({\n      flowFullClassName: \"com.example.organization.samples.application.flows.SomeCoolFlow\",\n      flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n      params: [\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"long\",\n          },\n          primitiveValue: 42,\n        }\n      ],\n      timeoutMs: 60000,\n    });\n    ```\n\n### Invoke Contract (flow) with a custom class parameter\n\nBelow, we'll demonstrate invoking a contract with a single class instance parameter.\n\n**The contract sources:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\n// contract with a class instance parameter\nclass BuildSpaceshipFlow {\n  public BuildSpaceshipFlow(SpaceshipInfo buildSpecs) {\n    // build spaceship as per the specs\n  }\n}\n```\n\n```java\npackage com.example.organization.samples.application.flows;\n\n// The type that the contract accepts as an input parameter\nclass SpaceshipInfo {\n  public SpaceshipInfo(String name, Integer seatsForHumans) {\n  }\n}\n```\n\n**Assembling and Sending your request:**\n\nInvoke the flow via the API client with the `params` populated as shown below.\n\nKey thing notice here is that we now have a class instance as a parameter for our contract (flow) invocation so we have to describe how this class instance itself will be instantiated by providing a nested array of parameters via the `jvmCtorArgs` which stands for Java Virtual Machine Constructor Arguments meaning that elements of this array will be passed in dynamically (via Reflection) to the class constructor.\n\n**Java Equivalent**\n\n```java\ncordaRpcClient.startFlowDynamic(\n  BuildSpaceshipFlow.class,\n  new SpaceshipInfo(\n    \"The last spaceship you'll ever need.\",\n    10000000\n  )\n);\n```\n\n**Cactus Invocation JSON DLS Equivalent to the Above Java Snippet**\n\n```typescript\nimport { DefaultApi as CordaApi } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\nimport { FlowInvocationType } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n\n// don't forget to specify the port if applicable\nconst apiUrl = \"your-cactus-host.example.com\";\nconst apiClient = new CordaApi({ basePath: apiUrl });\n\nconst res = await apiClient.invokeContractV1({\n  flowFullClassName: \"com.example.organization.samples.application.flows.BuildSpaceshipFlow\",\n  flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n  params: [\n    {\n      jvmTypeKind: JvmTypeKind.REFERENCE,\n        jvmType: {\n        fqClassName: \"com.example.organization.samples.application.flows.SpaceshipInfo\",\n      },\n\n      jvmCtorArgs: [\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"java.lang.String\",\n          },\n          primitiveValue: \"The last spaceship you'll ever need.\",\n        },\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"java.lang.Long\",\n          },\n          primitiveValue: 10000000000,\n        },\n      ],\n    }\n  ],\n  timeoutMs: 60000,\n});\n```\n\n### Custom Configuration via Env Variables\n\n```json\n{\n  \"cactus\": {\n    \"corda\": {\n      \"node\": {\n        \"host\": \"localhost\"\n      },\n      \"rpc\": {\n        \"port\": 10006,\n        \"username\": \"user1\",\n        \"password\": \"test\"\n      }\n    }\n  }\n}\n```\n\n```sh\nSPRING_APPLICATION_JSON='{\"cactus\":{\"corda\":{\"node\": {\"host\": \"localhost\"}, \"rpc\":{\"port\": 10006, \"username\":\"user1\", \"password\": \"test\"}}}}' gradle test\n```\n\n```json\n{\n  \"flowFullClassName\" : \"net.corda.samples.example.flows.ExampleFlow${\"$\"}Initiator\",\n  \"flowInvocationType\" : \"FLOW_DYNAMIC\",\n  \"params\" : [ {\n    \"jvmTypeKind\" : \"PRIMITIVE\",\n    \"jvmType\" : {\n      \"fqClassName\" : \"java.lang.Integer\"\n    },\n    \"primitiveValue\" : 42,\n    \"jvmCtorArgs\" : null\n  }, {\n    \"jvmTypeKind\" : \"REFERENCE\",\n    \"jvmType\" : {\n      \"fqClassName\" : \"net.corda.core.identity.Party\"\n    },\n    \"primitiveValue\" : null,\n    \"jvmCtorArgs\" : [ {\n      \"jvmTypeKind\" : \"REFERENCE\",\n      \"jvmType\" : {\n        \"fqClassName\" : \"net.corda.core.identity.CordaX500Name\"\n      },\n      \"primitiveValue\" : null,\n      \"jvmCtorArgs\" : [ {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"PartyB\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"New York\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"US\",\n        \"jvmCtorArgs\" : null\n      } ]\n    }, {\n      \"jvmTypeKind\" : \"REFERENCE\",\n      \"jvmType\" : {\n        \"fqClassName\" : \"org.hyperledger.cactus.plugin.ledger.connector.corda.server.impl.PublicKeyImpl\"\n      },\n      \"primitiveValue\" : null,\n      \"jvmCtorArgs\" : [ {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"EdDSA\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"X.509\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"MCowBQYDK2VwAyEAoOv19eiCDJ7HzR9UrfwbFig7qcD1jkewKkkS4WF9kPA=\",\n        \"jvmCtorArgs\" : null\n      } ]\n    } ]\n  } ],\n  \"timeoutMs\" : null\n}\n```\n\n```json\nI 16:51:01 1 Client.main - nodeDiagnosticInfo=\n{\n  \"version\" : \"4.6\",\n  \"revision\" : \"85e387ea730d9be7d6dc2b23caba1ee18305af74\",\n  \"platformVersion\" : 8,\n  \"vendor\" : \"Corda Open Source\",\n  \"cordapps\" : [ {\n    \"type\" : \"Workflow CorDapp\",\n    \"name\" : \"workflows-1.0\",\n    \"shortName\" : \"Example-Cordapp Flows\",\n    \"minimumPlatformVersion\" : 8,\n    \"targetPlatformVersion\" : 8,\n    \"version\" : \"1\",\n    \"vendor\" : \"Corda Open Source\",\n    \"licence\" : \"Apache License, Version 2.0\",\n    \"jarHash\" : {\n      \"offset\" : 0,\n      \"size\" : 32,\n      \"bytes\" : \"V7ssTw0etgg3nSGk1amArB+fBH8fQUyBwIFs0DhID+0=\"\n    }\n  }, {\n    \"type\" : \"Contract CorDapp\",\n    \"name\" : \"contracts-1.0\",\n    \"shortName\" : \"Example-Cordapp Contracts\",\n    \"minimumPlatformVersion\" : 8,\n    \"targetPlatformVersion\" : 8,\n    \"version\" : \"1\",\n    \"vendor\" : \"Corda Open Source\",\n    \"licence\" : \"Apache License, Version 2.0\",\n    \"jarHash\" : {\n      \"offset\" : 0,\n      \"size\" : 32,\n      \"bytes\" : \"Xe0eoh4+T6fsq4u0QKqkVsVDMYSWhuspHqE0wlOlyqU=\"\n    }\n  } ]\n}\n```\n\n## Building Docker Image Locally\n\nThe `cccs` tag used in the below example commands is a shorthand for the\nfull name of the container image otherwise referred to as `cactus-corda-connector-server`.\n\nFrom the project root:\n\n```sh\nDOCKER_BUILDKIT=1 docker build ./packages/cactus-plugin-ledger-connector-corda/src/main-server/ -t cccs\n```\n\n## Example NodeDiagnosticInfo JSON Response\n\n```json\n{\n  \"version\": \"4.6\",\n  \"revision\": \"85e387ea730d9be7d6dc2b23caba1ee18305af74\",\n  \"platformVersion\": 8,\n  \"vendor\": \"Corda Open Source\",\n  \"cordapps\": [\n    {\n      \"type\": \"Workflow CorDapp\",\n      \"name\": \"workflows-1.0\",\n      \"shortName\": \"Obligation Flows\",\n      \"minimumPlatformVersion\": 8,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"Corda Open Source\",\n      \"licence\": \"Apache License, Version 2.0\",\n      \"jarHash\": {\n        \"bytes\": \"Vf9MllnrC7vrWxrlDE94OzPMZW7At1HhTETL/XjiAmc=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"CorDapp\",\n      \"name\": \"corda-confidential-identities-4.6\",\n      \"shortName\": \"corda-confidential-identities-4.6\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 1,\n      \"version\": \"Unknown\",\n      \"vendor\": \"Unknown\",\n      \"licence\": \"Unknown\",\n      \"jarHash\": {\n        \"bytes\": \"nqBwqHJMbLW80hmRbKEYk0eAknFiX8N40LKuGsD0bPo=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Contract CorDapp\",\n      \"name\": \"corda-finance-contracts-4.6\",\n      \"shortName\": \"Corda Finance Demo\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"R3\",\n      \"licence\": \"Open Source (Apache 2)\",\n      \"jarHash\": {\n        \"bytes\": \"a43Q/GJG6JKTZzq3U80P8L1DWWcB/D+Pl5uitEtAeQQ=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Workflow CorDapp\",\n      \"name\": \"corda-finance-workflows-4.6\",\n      \"shortName\": \"Corda Finance Demo\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"R3\",\n      \"licence\": \"Open Source (Apache 2)\",\n      \"jarHash\": {\n        \"bytes\": \"wXdD4Iy50RaWzPp7n9s1xwf4K4MB8eA1nmhPquTMvxg=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Contract CorDapp\",\n      \"name\": \"contracts-1.0\",\n      \"shortName\": \"Obligation Contracts\",\n      \"minimumPlatformVersion\": 8,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"Corda Open Source\",\n      \"licence\": \"Apache License, Version 2.0\",\n      \"jarHash\": {\n        \"bytes\": \"grTZzN71Cpxw6rZe/U5SB6/ehl99B6VQ1+ZJEx1rixs=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    }\n  ]\n}\n```\n\n## Monitoring\n\n### Usage Prometheus\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorCorda` class constructor itself, so instantiating the object of the `PluginLedgerConnectorCorda` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorCordaOptions` interface for `PluginLedgerConnectoCorda` constructor.\n\n`getPrometheusExporterMetricsEndpointV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorCorda` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'corda_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-corda/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/deploy-cordapp-jars-to-nodes.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-corda/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_corda_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n","readmeFilename":"README.md","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.7.1-scope-changed.ab167ba4.5","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-6HyBpJMOXZL2anEXQBfUi5hLgAwvTV1CPzokmma7dWOwScKYSqrCfteOKZ1PfdobQbCDT08qcQl2T5AMKKwZNQ==","shasum":"7e4107698cba06077e956c9bf699be4550f2cb41","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.7.1-scope-changed.ab167ba4.5.tgz","fileCount":51,"unpackedSize":2379229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE3k4CRA9TVsSAnZWagAA1LQP/RlUtlbrBsdiEaRT5HxX\n4KemjbTtxHInR8SlA4nBhbyCu9VP6K1cx3j0MEe/0oxzCI4CdHmTbBjnSwB0\n2s4toUQCa8Sq0eAOEx0bHBh1y7sDkaGMzCYvqGVsPJ8IcKz38CTlc951o37i\n2U/Ny115uyJi7HKnXlMHUZYb7gKQgQpjWj1r74o8VuToW59ksBDQBU84nyJe\nz/grN3oEA4w+0pt0j8xt3BvD0zLE6Fm6RsAIKfWUsChm5KMuBeaMqcYbYtj2\nnNVZ2AMnnEE3pmzv7DG6+h6Mb9bWRLE4ZOxzoyU2VXnhnMwc9qAufdvYXDiZ\na6VgpO0OndiT6Wbtc4Trl1z2cYVIzdj/Wygk534gf+DGBauKDRWKgpAgCwwm\nOIJpGBf1Z2117VCJ9OXU1b28GxZQxDk1IC3gF2ig9RZuZMC44g8/Ojg+xtfk\nDn4rEXAy1E6CCZjXdQlBSgDe5XTXvIi5cF0qHhf5oJmdcphZjYryduqKyQCc\nQ7fGif3eoIDhuK2UzZxTcV8qe+6/NRYAwr4dJ7ZdXBJjfpkDxODywOCLyEdn\nKuzxdMpnCc1SwNh3yuDVPjVKSmHHwZfYMGPzKX89gNoLEF3Ed1pKKDALmjq2\nXzrAyN4cY/hUm6WEKkJTuBYJKHnAjSr+psEQVQGpAykhus+j3ttZ52/VzkHx\nKNAO\r\n=0F2m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDPUtq4hMlGO6l4fjrhAWD5wIN69WRG/us6psmYxBPzuAiEAiybUk6kmdZZnPBm1asOwrXYGIPJTzTbdsIPck0warQo="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.7.1-scope-changed.ab167ba4.5_1628666168410_0.05211293769896552"},"_hasShrinkwrap":false},"0.7.1-scope-changed.2eda5046.6":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.7.1-scope-changed.2eda5046.6","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"^0.7.1-scope-changed.2eda5046.6+2eda5046","@elenaizaguirre/cactus-core":"^0.7.1-scope-changed.2eda5046.6+2eda5046","@elenaizaguirre/cactus-core-api":"^0.7.1-scope-changed.2eda5046.6+2eda5046","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"^0.7.1-scope-changed.2eda5046.6+2eda5046","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"2eda50462d834a7a74aeaa9e0d9784406ef05ebe","readme":"# `@hyperledger/cactus-plugin-ledger-connector-corda` <!-- omit in toc -->\n\n## Table of Contents <!-- omit in toc -->\n\n- [Summary](#summary)\n- [Concepts](#concepts)\n  - [Contract Invocation JSON DSL](#contract-invocation-json-dsl)\n  - [Expressing Primitive vs Reference Types with the DLS](#expressing-primitive-vs-reference-types-with-the-dls)\n  - [Flow Invocation Types](#flow-invocation-types)\n- [Usage](#usage)\n  - [Invoke Contract (flow) with no parameters](#invoke-contract-flow-with-no-parameters)\n  - [Invoke Contract (flow) with a single integer parameter](#invoke-contract-flow-with-a-single-integer-parameter)\n  - [Invoke Contract (flow) with a custom class parameter](#invoke-contract-flow-with-a-custom-class-parameter)\n  - [Custom Configuration via Env Variables](#custom-configuration-via-env-variables)\n- [Building Docker Image Locally](#building-docker-image-locally)\n- [Example NodeDiagnosticInfo JSON Response](#example-nodediagnosticinfo-json-response)\n- [Monitoring](#monitoring)\n  - [Usage Prometheus](#usage-prometheus)\n  - [Prometheus Integration](#prometheus-integration)\n  - [Helper code](#helper-code)\n        - [response.type.ts](#responsetypets)\n        - [data-fetcher.ts](#data-fetcherts)\n        - [metrics.ts](#metricsts)\n\n## Summary\n\nThe Corda connector is written in Kotlin and ships as a Spring Boot JVM application\nthat accepts API requests and translates those into Corda RPC calls.\n\nDeploying the Corda connector therefore involves also deploying the mentioned JVM\napplication **in addition** to deploying the Cactus API server with the desired\nplugins configured.\n\n## Concepts\n\n### Contract Invocation JSON DSL\n\nOne of our core design principles for Hyperledger Cactus is to have low impact\ndeployments meaning that changes to the ledgers themselves should be kept to a\nminimum or preferably have no need for any at all. With this in mind, we had to\nsolve the challenge of providing users with the ability to invoke Corda flows\nas dynamically as possible within the confines of the strongly typed JVM contrasted\nwith the weakly typed Javascript language runtime of NodeJS.\n\nCorda might release some convenience features to ease this in the future, but\nin the meantime we have the *Contract Invocation JSON DSL* which allows developers\nto specify truly arbitrary JVM types as part of their contract invocation arguments\neven if otherwise these types would not be possible to serialize or deserialize\nwith traditional tooling such as the excellent\n[Jackson JSON Java library](https://github.com/FasterXML/jackson) or similar ones.\n\n### Expressing Primitive vs Reference Types with the DLS\n\nThe features of the DSL include expressing whether a contract invocation parameter\nis a reference or a primitive JVM data types.\nThis is a language feature that Javascript has as well to some extent, but for\nthose in need of a refresher, here's a writeup from a well known Q/A website that\nI found on the internet: [What's the difference between primitive and reference types?\n](https://stackoverflow.com/a/32049775/698470)\n\nTo keep it simple, the following types are primitive data types in the\nJava Virtual Machine (JVM) and everything else not included in the list below\ncan be safely considered a reference type:\n- boolean\n- byte\n- short\n- char\n- int\n- long\n- float\n- double\n\nIf you'd like to further clarify how this works and feel like an exciting adventure\nthen we recommend that you dive into the source code of the\n[deserializer implementation of the JSON DSL](https://github.com/hyperledger/cactus/blob/main/packages/cactus-plugin-ledger-connector-corda/src/main-server/kotlin/gen/kotlin-spring/src/main/kotlin/org/hyperledger/cactus/plugin/ledger/connector/corda/server/impl/JsonJvmObjectDeserializer.kt) and take a look at the following points of interest\nin the code located there:\n- `val exoticTypes: Map<String, Class<*>>`\n- `fun instantiate(jvmObject: JvmObject)`\n\n### Flow Invocation Types\n\nCan be **dynamic** or **tracked dynamic** and the corresponding enum values\nare defined as:\n\n```typescript\n/**\n * Determines which flow starting method will be used on the back-end when invoking the flow. Based on the value here the plugin back-end might invoke the rpc.startFlowDynamic() method or the rpc.startTrackedFlowDynamic() method. Streamed responses are aggregated and returned in a single response to HTTP callers who are not equipped to handle streams like WebSocket/gRPC/etc. do.\n * @export\n * @enum {string}\n */\nexport enum FlowInvocationType {\n    TRACKEDFLOWDYNAMIC = 'TRACKED_FLOW_DYNAMIC',\n    FLOWDYNAMIC = 'FLOW_DYNAMIC'\n}\n```\n\n[Official Corda Java Docs - startFlowDynamic()](https://api.corda.net/api/corda-os/4.7/html/api/kotlin/corda/net.corda.core.messaging/-corda-r-p-c-ops/start-flow-dynamic.html)\n\n[Official Corda Java Docs - startTrackedFlowDynamic()](https://api.corda.net/api/corda-os/4.7/html/api/kotlin/corda/net.corda.core.messaging/-corda-r-p-c-ops/start-tracked-flow-dynamic.html)\n\n\n## Usage\n\nTake a look at how the API client can be used to run transactions on a Corda ledger:\n`packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/jvm-kotlin-spring-server.test.ts`\n\n\n### Invoke Contract (flow) with no parameters\n\nBelow, we'll demonstrate invoking a simple contract with no parameters.\n\n**The contract source:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\nclass SomeCoolFlow {\n  // constructor with no arguments\n  public SomeCoolFlow() {\n    this.doSomething();\n  }\n\n  public doSomething(): void {\n    throw new RuntimeException(\"Method not implemented.\");\n  }\n}\n```\n\n**Steps to build your request:**\n\n1. Find out the fully qualified class name of your contract (flow) and set this as the value for the request parameter `flowFullClassName`\n2. Decide on your flow invocation type which largely comes down to answering the question of: Does your invocation follow a request/response pattern or more like a channel subscription where multiple updates at different times are streamed to the client in response to the invocation request? In our example we assume the simpler request/response communication pattern and therefore will set the `flowInvocationType` to `FlowInvocationType.FLOWDYNAMIC`\n3. Invoke the flow via the API client with the `params` argument being specified as an empty array `[]`\n    ```typescript\n    import { DefaultApi as CordaApi } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n    import { FlowInvocationType } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n\n    const apiUrl = \"your-cactus-host.example.com\"; // don't forget to specify the port if applicable\n    const apiClient = new CordaApi({ basePath: apiUrl });\n\n    const res = await apiClient.invokeContractV1({\n      flowFullClassName: \"com.example.organization.samples.application.flows.SomeCoolFlow\",\n      flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n      params: [],\n      timeoutMs: 60000,\n    });\n    ```\n\n### Invoke Contract (flow) with a single integer parameter\n\nBelow, we'll demonstrate invoking a simple contract with a single numeric parameter.\n\n**The contract source:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\nclass SomeCoolFlow {\n  // constructor with a primitive type long argument\n  public SomeCoolFlow(long myParameterThatIsLong) {\n    // do something with the parameter here\n  }\n}\n```\n\n**Steps to build your request:**\n\n1. Find out the fully qualified class name of your contract (flow) and set this as the value for the request parameter `flowFullClassName`\n2. Decide on your flow invocation type. More details at [Invoke Contract (flow) with no parameters](#invoke-contract-flow-with-no-parameters)\n3. Find out what is the fully qualified class name of the parameter you wish to pass in. You can do this be inspecting the sources of the contract itself. If you do not have access to those sources, then the documentation of the contract should have answers or the person who authored said contract. In our case here the fully qualified class name for the number parameter is simply `long` because it is a primitive data type and as such these can be referred to in their short form, but the fully qualified version also works such as: `java.lang.Long`.\nWhen in doubt about these, you can always consult the [official java.lang.Long Java Docs](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Long.html)\nAfter having determined the above, you can construct your first `JvmObject` JSON object as follows in order to pass in the number `42` as the first and only parameter for our flow invocation:\n    ```json\n    params: [\n      {\n        jvmTypeKind: JvmTypeKind.PRIMITIVE,\n        jvmType: {\n          fqClassName: \"long\",\n        },\n        primitiveValue: 42,\n      }\n    ]\n    ```\n1. Invoke the flow via the API client with the `params` populated as explained above:\n    ```typescript\n    import { DefaultApi as CordaApi } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n    import { FlowInvocationType } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n\n    // don't forget to specify the port if applicable\n    const apiUrl = \"your-cactus-host.example.com\";\n    const apiClient = new CordaApi({ basePath: apiUrl });\n\n    const res = await apiClient.invokeContractV1({\n      flowFullClassName: \"com.example.organization.samples.application.flows.SomeCoolFlow\",\n      flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n      params: [\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"long\",\n          },\n          primitiveValue: 42,\n        }\n      ],\n      timeoutMs: 60000,\n    });\n    ```\n\n### Invoke Contract (flow) with a custom class parameter\n\nBelow, we'll demonstrate invoking a contract with a single class instance parameter.\n\n**The contract sources:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\n// contract with a class instance parameter\nclass BuildSpaceshipFlow {\n  public BuildSpaceshipFlow(SpaceshipInfo buildSpecs) {\n    // build spaceship as per the specs\n  }\n}\n```\n\n```java\npackage com.example.organization.samples.application.flows;\n\n// The type that the contract accepts as an input parameter\nclass SpaceshipInfo {\n  public SpaceshipInfo(String name, Integer seatsForHumans) {\n  }\n}\n```\n\n**Assembling and Sending your request:**\n\nInvoke the flow via the API client with the `params` populated as shown below.\n\nKey thing notice here is that we now have a class instance as a parameter for our contract (flow) invocation so we have to describe how this class instance itself will be instantiated by providing a nested array of parameters via the `jvmCtorArgs` which stands for Java Virtual Machine Constructor Arguments meaning that elements of this array will be passed in dynamically (via Reflection) to the class constructor.\n\n**Java Equivalent**\n\n```java\ncordaRpcClient.startFlowDynamic(\n  BuildSpaceshipFlow.class,\n  new SpaceshipInfo(\n    \"The last spaceship you'll ever need.\",\n    10000000\n  )\n);\n```\n\n**Cactus Invocation JSON DLS Equivalent to the Above Java Snippet**\n\n```typescript\nimport { DefaultApi as CordaApi } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\nimport { FlowInvocationType } from \"@hyperledger/cactus-plugin-ledger-connector-corda\";\n\n// don't forget to specify the port if applicable\nconst apiUrl = \"your-cactus-host.example.com\";\nconst apiClient = new CordaApi({ basePath: apiUrl });\n\nconst res = await apiClient.invokeContractV1({\n  flowFullClassName: \"com.example.organization.samples.application.flows.BuildSpaceshipFlow\",\n  flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n  params: [\n    {\n      jvmTypeKind: JvmTypeKind.REFERENCE,\n        jvmType: {\n        fqClassName: \"com.example.organization.samples.application.flows.SpaceshipInfo\",\n      },\n\n      jvmCtorArgs: [\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"java.lang.String\",\n          },\n          primitiveValue: \"The last spaceship you'll ever need.\",\n        },\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"java.lang.Long\",\n          },\n          primitiveValue: 10000000000,\n        },\n      ],\n    }\n  ],\n  timeoutMs: 60000,\n});\n```\n\n### Custom Configuration via Env Variables\n\n```json\n{\n  \"cactus\": {\n    \"corda\": {\n      \"node\": {\n        \"host\": \"localhost\"\n      },\n      \"rpc\": {\n        \"port\": 10006,\n        \"username\": \"user1\",\n        \"password\": \"test\"\n      }\n    }\n  }\n}\n```\n\n```sh\nSPRING_APPLICATION_JSON='{\"cactus\":{\"corda\":{\"node\": {\"host\": \"localhost\"}, \"rpc\":{\"port\": 10006, \"username\":\"user1\", \"password\": \"test\"}}}}' gradle test\n```\n\n```json\n{\n  \"flowFullClassName\" : \"net.corda.samples.example.flows.ExampleFlow${\"$\"}Initiator\",\n  \"flowInvocationType\" : \"FLOW_DYNAMIC\",\n  \"params\" : [ {\n    \"jvmTypeKind\" : \"PRIMITIVE\",\n    \"jvmType\" : {\n      \"fqClassName\" : \"java.lang.Integer\"\n    },\n    \"primitiveValue\" : 42,\n    \"jvmCtorArgs\" : null\n  }, {\n    \"jvmTypeKind\" : \"REFERENCE\",\n    \"jvmType\" : {\n      \"fqClassName\" : \"net.corda.core.identity.Party\"\n    },\n    \"primitiveValue\" : null,\n    \"jvmCtorArgs\" : [ {\n      \"jvmTypeKind\" : \"REFERENCE\",\n      \"jvmType\" : {\n        \"fqClassName\" : \"net.corda.core.identity.CordaX500Name\"\n      },\n      \"primitiveValue\" : null,\n      \"jvmCtorArgs\" : [ {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"PartyB\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"New York\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"US\",\n        \"jvmCtorArgs\" : null\n      } ]\n    }, {\n      \"jvmTypeKind\" : \"REFERENCE\",\n      \"jvmType\" : {\n        \"fqClassName\" : \"org.hyperledger.cactus.plugin.ledger.connector.corda.server.impl.PublicKeyImpl\"\n      },\n      \"primitiveValue\" : null,\n      \"jvmCtorArgs\" : [ {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"EdDSA\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"X.509\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"MCowBQYDK2VwAyEAoOv19eiCDJ7HzR9UrfwbFig7qcD1jkewKkkS4WF9kPA=\",\n        \"jvmCtorArgs\" : null\n      } ]\n    } ]\n  } ],\n  \"timeoutMs\" : null\n}\n```\n\n```json\nI 16:51:01 1 Client.main - nodeDiagnosticInfo=\n{\n  \"version\" : \"4.6\",\n  \"revision\" : \"85e387ea730d9be7d6dc2b23caba1ee18305af74\",\n  \"platformVersion\" : 8,\n  \"vendor\" : \"Corda Open Source\",\n  \"cordapps\" : [ {\n    \"type\" : \"Workflow CorDapp\",\n    \"name\" : \"workflows-1.0\",\n    \"shortName\" : \"Example-Cordapp Flows\",\n    \"minimumPlatformVersion\" : 8,\n    \"targetPlatformVersion\" : 8,\n    \"version\" : \"1\",\n    \"vendor\" : \"Corda Open Source\",\n    \"licence\" : \"Apache License, Version 2.0\",\n    \"jarHash\" : {\n      \"offset\" : 0,\n      \"size\" : 32,\n      \"bytes\" : \"V7ssTw0etgg3nSGk1amArB+fBH8fQUyBwIFs0DhID+0=\"\n    }\n  }, {\n    \"type\" : \"Contract CorDapp\",\n    \"name\" : \"contracts-1.0\",\n    \"shortName\" : \"Example-Cordapp Contracts\",\n    \"minimumPlatformVersion\" : 8,\n    \"targetPlatformVersion\" : 8,\n    \"version\" : \"1\",\n    \"vendor\" : \"Corda Open Source\",\n    \"licence\" : \"Apache License, Version 2.0\",\n    \"jarHash\" : {\n      \"offset\" : 0,\n      \"size\" : 32,\n      \"bytes\" : \"Xe0eoh4+T6fsq4u0QKqkVsVDMYSWhuspHqE0wlOlyqU=\"\n    }\n  } ]\n}\n```\n\n## Building Docker Image Locally\n\nThe `cccs` tag used in the below example commands is a shorthand for the\nfull name of the container image otherwise referred to as `cactus-corda-connector-server`.\n\nFrom the project root:\n\n```sh\nDOCKER_BUILDKIT=1 docker build ./packages/cactus-plugin-ledger-connector-corda/src/main-server/ -t cccs\n```\n\n## Example NodeDiagnosticInfo JSON Response\n\n```json\n{\n  \"version\": \"4.6\",\n  \"revision\": \"85e387ea730d9be7d6dc2b23caba1ee18305af74\",\n  \"platformVersion\": 8,\n  \"vendor\": \"Corda Open Source\",\n  \"cordapps\": [\n    {\n      \"type\": \"Workflow CorDapp\",\n      \"name\": \"workflows-1.0\",\n      \"shortName\": \"Obligation Flows\",\n      \"minimumPlatformVersion\": 8,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"Corda Open Source\",\n      \"licence\": \"Apache License, Version 2.0\",\n      \"jarHash\": {\n        \"bytes\": \"Vf9MllnrC7vrWxrlDE94OzPMZW7At1HhTETL/XjiAmc=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"CorDapp\",\n      \"name\": \"corda-confidential-identities-4.6\",\n      \"shortName\": \"corda-confidential-identities-4.6\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 1,\n      \"version\": \"Unknown\",\n      \"vendor\": \"Unknown\",\n      \"licence\": \"Unknown\",\n      \"jarHash\": {\n        \"bytes\": \"nqBwqHJMbLW80hmRbKEYk0eAknFiX8N40LKuGsD0bPo=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Contract CorDapp\",\n      \"name\": \"corda-finance-contracts-4.6\",\n      \"shortName\": \"Corda Finance Demo\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"R3\",\n      \"licence\": \"Open Source (Apache 2)\",\n      \"jarHash\": {\n        \"bytes\": \"a43Q/GJG6JKTZzq3U80P8L1DWWcB/D+Pl5uitEtAeQQ=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Workflow CorDapp\",\n      \"name\": \"corda-finance-workflows-4.6\",\n      \"shortName\": \"Corda Finance Demo\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"R3\",\n      \"licence\": \"Open Source (Apache 2)\",\n      \"jarHash\": {\n        \"bytes\": \"wXdD4Iy50RaWzPp7n9s1xwf4K4MB8eA1nmhPquTMvxg=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Contract CorDapp\",\n      \"name\": \"contracts-1.0\",\n      \"shortName\": \"Obligation Contracts\",\n      \"minimumPlatformVersion\": 8,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"Corda Open Source\",\n      \"licence\": \"Apache License, Version 2.0\",\n      \"jarHash\": {\n        \"bytes\": \"grTZzN71Cpxw6rZe/U5SB6/ehl99B6VQ1+ZJEx1rixs=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    }\n  ]\n}\n```\n\n## Monitoring\n\n### Usage Prometheus\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorCorda` class constructor itself, so instantiating the object of the `PluginLedgerConnectorCorda` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorCordaOptions` interface for `PluginLedgerConnectoCorda` constructor.\n\n`getPrometheusExporterMetricsEndpointV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorCorda` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'corda_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-corda/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/deploy-cordapp-jars-to-nodes.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-corda/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_corda_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n","readmeFilename":"README.md","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.7.1-scope-changed.2eda5046.6","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-FzPrUvZ6wTIG8WdVNjFoZsV1qEA7e+gltQm8CgiTvCU9btr1KoO8Bn/QnH9WgERMs3IivFrCqN9fNbBD1CciDA==","shasum":"30a7b533dfd2662653a32b3fd23346de868fad40","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.7.1-scope-changed.2eda5046.6.tgz","fileCount":51,"unpackedSize":2379229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE4HlCRA9TVsSAnZWagAAUqIP/jd8iuLV3IyepOVbSt6q\n/eAStn2XqrMjOq64xmuSSPpyGvSzb/+1gLoiZIPKdkghFKMgvRAVI9NFmkWX\nvgrvgy+WUXLQEuy1FEXiUnK4IJYEP5q4oiClXs8dBfAroacBgY1cv8THDIwH\nnHpIqHAbiZFmybZStAsvbMBu0AL25l1BDaVYdZgVgu2cF/+JjM+okGwLUMlw\nXjvM8zQ8si03i5PveTVHoJp9rnb2JiAr/WtAi2LXylCkvpah78ToVk/a2t3T\n7CBE/lLuR8DRi06u79LBdkZhQR6yeHPbK/I3gr+N9BpE34c8M32MacZpekHN\n/PCI9gETUo9egbYd/KA4Y50nHsad3gPDK2gdBGalR0YmgZwpajLbEl8eBOEg\nMDCIJHORHOnNk5osKOgHBPBNCsLOmyjovHLLnWnbN1Rna9YFEP0L5EWkFKU6\nHj5Leo45/jG5o5phkv1fFVf3UBYKTuFWEE2DrLP0vjeiRcWWDO2VFFvmaaug\naGoSja8LXKVPVw2MT5/gLMPO1jfHyjUUw9uOwh8BUKtlS9il14eUPYOu1sah\nD1vhkFbbzvSsJ3sKbe/AHN4+IP4DQsyS/wfEleQmmNUSQjrFqle62tn8l5Ox\nxMYKL+/5XYISJc3DZHynpOPtfiUAMIKIepsRqjjKXDOS9WIPwmSxXGh+qJsB\n99pv\r\n=vLsn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgJtsRVFMtEqijtSl7t3ZWgWOOCnAo6lvkheTfucOSBwIgefeGIT3/nb/LCBZsb3s2VnmhEd8p6MNFXI7G6wRo5/k="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.7.1-scope-changed.2eda5046.6_1628668389212_0.8934883476818014"},"_hasShrinkwrap":false},"0.6.10":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.10","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.10","@elenaizaguirre/cactus-core":"0.6.10","@elenaizaguirre/cactus-core-api":"0.6.10","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.10","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"2eda50462d834a7a74aeaa9e0d9784406ef05ebe","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.10","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-5mYysh1kpokM65BuHZR8CSxIDt9jnpzQwMfvx5mREOrIrz6KgvGGD3zoLw5cAanR2vKDI+vgC1KRjml1slUg0w==","shasum":"66cdf9a2d2f45212500501e859ebea1bd6314df4","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.10.tgz","fileCount":51,"unpackedSize":2379060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE4UGCRA9TVsSAnZWagAAgIwP/1Uu+YCwR0khbSyIRtvI\nSXS0JMWN8ePPNVhjZiPJn89bk2GwtsRQpFCq79t69zO25sZ4l6Q1oxeHDNwV\nXNZEXt9UMNkSKIbuffVWcUm+cTSOgmmkYEN9xOPVM3dOHlF0brgBXBtupiq0\nLyJodtcnNvUpopKngyNt7EaDHSiSTHf9nAEZgblbXwJoEV0qWCSdxbM2wPJH\nbK1dv+DB2Q9Y0tvKk99L9Vu+xaunFHo77aQHINz9KAFo64bOl+d2ot+n7MKr\nl9kTDu6DyPnJCdXGny9OrVp4o0jcsvGTDpvh4anLL8/XWxbGHo7C2USjn6UQ\nh1Zqq3KE//4xnee+W0KLDSp+e4eZ4wmHOUfQmt/efYOpX/c1dZQ/KH2yDUxS\nF9Ca6Bu65EQ887RM7vqa7u+r/vtRWIZ9i4Vp9NA9+7THUC5n8x38JUbuf59J\n1NxDMt5SX6HTHicWQEOaZGAIi7Bcy6GawOnNYczqcbRgABQC+I9fKXmhARAu\nG+zu9ZgwnMxh7kIQ71z4Ys5RyJiYYnvJmzsHP2N0OTyXXujmHZkesOUBg6Db\nCG2xGw6FxeHtDTt8DkPEgbwfczyg9SmS6LK83qH1XuWpILZQ8RufTtaKsnq4\nnP+dEfpx4RHHdIrGww0IH7UYLeLeRqPkJRIY4wFqpalNjyBrB0yB+SDRZrtb\nrvt5\r\n=mk8W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAg3/Z2aVyXq33N9pe70nJYQGvwbWsU+9vVSAeWtFp73AiEApfHgIL3zkIEeuHxEX5+9r/AUYY8lt13g96tyn1zk2AM="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.10_1628669190478_0.2527137724137083"},"_hasShrinkwrap":false},"0.6.11":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.11","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.11","@elenaizaguirre/cactus-core":"0.6.11","@elenaizaguirre/cactus-core-api":"0.6.11","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.11","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"ed87c800f7f633794eb8d6bffacd5812c6620f19","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.11","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-R0R1YeQPpmaWxcfLMgJq+7IVz5aJwDw3YhN5onsU7C8KMiYtGDCyOXizxJkoNqc9T6R+CFNWsNNxbb1ocoH2HA==","shasum":"e7b9d2f0acbedcf9deba31cc7ac051fb8a0cf781","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.11.tgz","fileCount":51,"unpackedSize":2379060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE5PuCRA9TVsSAnZWagAAR/4P/3fsmhz5vqm2MU6sTc0e\ngFsCjHAggtwBmrYKcWEX7fY1K/atnT79xHeJFmJefnrS0TWJuLahqKwh0r5q\ncWP+2Yjr5wQm4CpvDPSRA5MxYRsJ3bcYFlPAyRj3P4wn0kQKkU6+5YQ19uqp\nJ7aCHYQ5T6I9VMKYGcWRk8sGRRjsMpHRjBAAy6yVQmdyszwfMkObbFrHRHoG\nAWIU2Y388CBNPrOcn42/y4jDVN3g4uY0rqOhpgC1mP11ztnR2AnqeOqVA+tJ\nlB0u8tMpjblYmbDSDoJNDluMrRe6IKYJi22zB/AtEf4MUUmP2+AsXEd1tQg3\nW6JvT/N9K+FND0eek8VWjZ9gIcXYnZ9SaKuu5hBaDM1ZPuFBswcet4KJu2UN\nBMtnl2wkexNgiBajcriFYa2sswrCug9jMcwaZPXPi02tfFK7jpb01OOTmx1/\n/+x6vPvuavk7Jx31acB/cmZZ/G4Wfd9TgBM0SW/PTr32HwQIdxYwNPuQUhBf\ncsS0tE7IedylDGaLS8GsfDAkeDKQg3D8vE9cC/usHEDQBQzCaFHjiaAV0I0m\nGbYOn38fkGM5YqSu2Bj98AM2Tvb7aIWpX9pUGfGsnNG+BO2wcUDrXmGkZIS1\nd2UzSOuxMta/8vO0Eh8BQkGQBAnSGKDxUe81EtXP+LVVg6c1B0+BXuJjDsO2\ndWly\r\n=FRCU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvOgHoERF1Oy3y9mD2GcULH1ZD+vAqX7uQdVN911yjyAiB6KjG1qO57QNf20PnJj4VRb+jVWNjnkFk3wWxlbp7LTg=="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.11_1628673006063_0.06442525605255223"},"_hasShrinkwrap":false},"0.6.12":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.12","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.12","@elenaizaguirre/cactus-core":"0.6.12","@elenaizaguirre/cactus-core-api":"0.6.12","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.12","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"fdd5a74e4f61223e63d3838b5648d57b4c1f6c82","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.12","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-o4VD6IvEZz60oLZ/V4Z3hnzcaa89FL0h7eM2JOCzGq2O6023GynPTy4IGwrkS3YUyy/cPQOy1N0PTue1OCPoww==","shasum":"d75c0178cef406dfa9f827eb51d7c3f579137801","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.12.tgz","fileCount":47,"unpackedSize":552628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFMZZCRA9TVsSAnZWagAAUwgP/0FPrrrPPXRjLrrr7yDm\nvsymWZan+RdPBxSeRyuhBLDOl22wiOcDRCvKfpSKOvWO74oP5z7+rUjLsyJA\neVdLO7B8vsIOsydNTRkeitnWEhUcSQc5H0a3Z2ePHDfHmCtNsVEf6IXvrD0u\n6Ra1EPvzoLilYa2Fndx1AAFN/DBGuGz6aatG873+iVFLNwmyhJotQCqENlr8\n2yxzGWVmnsT9DmyON1SGMsGkWcE0qjtoYEYN2HrK+KnOJ2ORwWMrfDk/TVnU\n3vNVgFudcweaB0c14sr/MIo2yj8iVq4KCssIOOEjsIKPhrDH5dBjqYNveW6f\nDodc4PnKruHz45fARBgDrDVo6/dGx5G1VjIWX8Jt7Dnd0om1zFeyIcpLLNew\nVKpCNYVtxv98Ox/PqaLqsW1cZaroc/u9zOXnvXsCWJkbCeFEHpl8u8OBwR4D\niLaU9fqSC9zY0Gu9RYXIkaFsBothIwuN/wSDuSPKCTgoRVpiPEMcNRCmhi5a\nOXOyISLHmIxoy63hEiv9mOEwOo3nNjzUSTbUNczYs662TAhrphk5WXXqNyH7\nLfxkG6KfE7OaatlMkcacjGrnGxIaivXUfiDFphu/ULcaDSVlHI16H7ih5+wO\nUUzofpAnC/sEw8k8NY/JAD3P+H9DPpawysN7YUz7dMbL72jxcsA0u6N3LroJ\nHluZ\r\n=meqW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRUtphmuACl8A7zC4uq88WkA0HJDCcV8F9HVHzWpG2vAiA8csHfuhSjdBbend7txegOzOGx6dl6NFPQN51d5PL++w=="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.12_1628751449190_0.6184897556189606"},"_hasShrinkwrap":false},"0.6.13":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.13","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.13","@elenaizaguirre/cactus-core":"0.6.13","@elenaizaguirre/cactus-core-api":"0.6.13","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.13","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"3e38c3846aa701a2ce680b0f475e0127df689328","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.13","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-eG+zdTr4j36TwfZiclp7a3IH3vZynuwtSG+fHJigU5FyXBHlvGsxHA1+ZS1wv03KoXpwwQMDuki4wamxAyJSEA==","shasum":"4c6e31492a105bd3eb6bd90d5a54b98bbc1a6f4a","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.13.tgz","fileCount":47,"unpackedSize":552748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFORHCRA9TVsSAnZWagAAoAoQAIZ3kcq1Nnkw/1ohhQR/\nwdNAjbVRAJYKo/lEnjjkcyUWxvBUE+G8LZREho0ID8SijnshzRErnKWpz9Ay\nUVYLO7URouwr7dRWp+g6BXDS1eEBqxFJW62UHa9XNfxRCbwVPSHq0RHl8W5x\narZ2SoHgP06Sd+G14ZyOiO1HopmtM6Y+ZJc9iRVAtIcfGMNmV03+YyS3mM7W\nhMgaA3edQx/lYg/5rwKtx6DRCazyKCcnPgCQFOeL5MtgKQomfbENqYnm20GO\n+TjAFLa31P1XOX18z8H4Cuu6shJMr2RlUWCLwtXc/uugvu86eYgqfpt15l3l\nwPwDVnpGyVworxDD286pakWgHe5khFBzJuJ47gi0Zij+davxEeKxG9LFhE4F\n8uhJMTAdMyu1rJGOmShK5DpZmIgDzZb0JPHbjqvb2aui1b7eGfLuz0M8j/P9\niQRJttVmViZ9mJpT68t6GDA9z5HRkDIf2tZ6I0Hm9kxNrE3H4PVQRLk/cYLA\nDaPQtpCECoD0FLngPhyjr69RyUf6SxhwJQ2dSHOdyyMev0DHXaZih8bkCJHK\n4i8EFXWytZmArFiG7Xmb2VlA0G/hGaWNvHRilXTX8vx9Ck3Azuj/DQJn+WqA\n1s7PyYGuds6RJykX+IW2VjBfzSbzTYtVtTTjDFs4NhAy2CZn5cfZY+Mkw0+G\nLKQt\r\n=Sgra\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE1ijHnEANlOYeGvL+IlyNdOnArdRocKxzaISiWubZKwAiAnZDi3x10gFV0CUceM9Rwb9lqLCUmAQjLK44RxOSw9oA=="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.13_1628759111218_0.2893026716771845"},"_hasShrinkwrap":false},"0.6.14":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.6.14","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.6.14","@elenaizaguirre/cactus-core":"0.6.14","@elenaizaguirre/cactus-core-api":"0.6.14","axios":"0.21.1","express-openapi-validator":"4.10.5","internal-ip":"6.2.0","joi":"14.3.1","node-ssh":"11.1.0","prom-client":"13.0.0","temp":"0.9.1","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.6.14","@types/express":"4.17.8","@types/joi":"14.3.4","@types/multer":"1.4.5","@types/node-ssh":"7.0.0","@types/temp":"0.8.34"},"gitHead":"d340c8a1c056abfbd0d93eecfb6dbf569a0ba215","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.6.14","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-vCPBl2gx/b7sUmaiRM3YfDbk0ifQ6kkjpTLPJvh3SHFCSDK6q6KhFsmBd7WrJ0edXjSflTQl+7QwKg062Lo3Kw==","shasum":"0df1f73bb58b4f3745cc0a747bd84513919a3fb3","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.6.14.tgz","fileCount":47,"unpackedSize":552628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFQPuCRA9TVsSAnZWagAAVWAP/3spWEkb8tBNEXdBPbF8\nOEfGa4KO8zKIyiax9HwHAjzOl+mV7BmBXupeid3hoHZXvQ/K8aYW8eZIthcY\nl/4FqY3AsN4vdnF2UmM8EUYOxvmdMUe+LXuN6BL6gtHeR8Tw9CmfkH7riZXJ\nFBKwPoO/g4XShtK1+1cSm6/lS/Cj5n19I/8fp98fALzCm09nAT6uEHH7ddIT\nr6kXfynx5/UkAh3Avp9AeuyB808tOKY7kN3/CMFlx8MmcRuC7kVQDpV2FX81\np8Xa4bW49XSCbEPwmW3qAzlxgirM0raa5W5cuzNnqsPf0kAB6PE9bOHhDLPx\nMghNHFH0a0D5XEZp1KgHphQWXgJHIoT2DXlqEWy858/sc8wVkDDbMpFDWHxh\nsN3lmG4N4aNCQaTF7FLx2tsjSMbb2u1G03OSKpjofqmKFyd+59WsGmErliZ5\nsJJkV9o1RO6f8Zj/7cTZegI4zRpFmIFdmjwSIeS3oqPa3kco2urCy+oRNGN9\nqLY7usaY/zHbtkeMTMgCaAMDzmLKC4ciYGJ+RxCsXCVJ2YnFhcSXh20eQo5B\nv4o1BxwPn5hopBGi2f2noMR9LNwhAPzpUq8woEO4kD6avPZvZRqZuqM866fG\ncgskK4oZeynb6pIl1NMHjUwFDbDNVQUY8594Q8qVAq4fl1rFy39j3JZHBjO/\nZ+Py\r\n=VooL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE3OhIfsLH/N/lFXhiM1GsbWd4fpCYi4MhqsapCRH8uEAiBrRbRnqf8IEBKMx/mqaaa4PW32QDJKQtnq9omcieecsQ=="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.6.14_1628767214302_0.5352522293722846"},"_hasShrinkwrap":false},"0.9.3":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.9.3","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.9.3","@elenaizaguirre/cactus-core":"0.9.3","@elenaizaguirre/cactus-core-api":"0.9.3","axios":"0.21.1","express-openapi-validator":"3.10.0","internal-ip":"6.2.0","joi":"17.4.2","node-ssh":"12.0.0","prom-client":"13.2.0","temp":"0.9.4","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.9.3","@types/express":"4.17.13","@types/multer":"1.4.7","@types/node-ssh":"7.0.1","@types/temp":"0.9.1"},"gitHead":"0d5cded5b3d726c93392ed2ce0fe8dfa2dc03c95","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.9.3","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-7I0V0VPPXC+cy5FIK0QF9x6jR0er727yc0rG5bdRayLRVFhy1xyqk60Y5l6U8sdpPh8I5Jc3dZFXPtr396QmJQ==","shasum":"fd66bd3261e22db29154eb96e6060bbb5d76d032","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.9.3.tgz","fileCount":60,"unpackedSize":7607601,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGf6gJbAUHgC+25MiT/EMHPCD1X9D27RUJuU7Je6mjS5AiA3AmWQukP3cbDMRNilIutrg3qepZx0XYWdNnsVe/J0RQ=="}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.9.3_1632223848355_0.5967727239711311"},"_hasShrinkwrap":false},"0.9.4":{"name":"@elenaizaguirre/cactus-plugin-ledger-connector-corda","version":"0.9.4","description":"Allows Cactus nodes to connect to a Corda ledger.","main":"dist/lib/main/typescript/index.js","mainMinified":"dist/cactus-plugin-ledger-connector-corda.node.umd.min.js","browser":"dist/cactus-plugin-ledger-connector-corda.web.umd.js","browserMinified":"dist/cactus-plugin-ledger-connector-corda.web.umd.min.js","module":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","scripts":{"generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","generate-server":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml","codegen:openapi":"run-p generate-sdk generate-server","codegen":"run-p 'codegen:*'","watch":"npm-watch","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@elenaizaguirre/cactus-common":"0.9.4","@elenaizaguirre/cactus-core":"0.9.4","@elenaizaguirre/cactus-core-api":"0.9.4","axios":"0.21.4","express-openapi-validator":"3.10.0","internal-ip":"6.2.0","joi":"17.4.2","node-ssh":"12.0.0","prom-client":"13.2.0","temp":"0.9.4","typescript-optional":"2.0.1"},"devDependencies":{"@elenaizaguirre/cactus-test-tooling":"0.9.4","@types/express":"4.17.13","@types/multer":"1.4.7","@types/node-ssh":"7.0.1","@types/temp":"0.9.1"},"gitHead":"50ad5e82a81dfca2040770c696d353055f27a24a","_id":"@elenaizaguirre/cactus-plugin-ledger-connector-corda@0.9.4","_nodeVersion":"16.3.0","_npmVersion":"lerna/4.0.0/node@v16.3.0+x64 (linux)","dist":{"integrity":"sha512-BK1YwusQ6IikDe8B9iBC1AMmiqTHwwpcSvpA1a9FYhKrALpfjgHW4C3pyQHOKoTRzLiG4jS9hxvtwvSPIwn0vQ==","shasum":"83162f7ce2e71d7cef26007a58dbf4881db56d84","tarball":"https://registry.npmjs.org/@elenaizaguirre/cactus-plugin-ledger-connector-corda/-/cactus-plugin-ledger-connector-corda-0.9.4.tgz","fileCount":61,"unpackedSize":8314180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2Fk5CRA9TVsSAnZWagAAFssP/07uK+1H138ERHKe5Orz\nzdce7o+kp2SHSG4pHt2CQx2WPvV7yO9i5zT+VCUcc47ejtiIe2+IDbXGPgqN\n+KNMIumS+fKQYKFEgaA9PjEN1cvmEmt35r3ighJEqk0QBLJtZsGLlq2Cj509\noXKvdtHjhJgZtw2G8cQ5dUOfOFDOBTsTcfgIyTLE2224wXZOl/rc49uIpa4I\nyRm8DLDhedtLMVgh6EH4KAJ31ecRLBRgIU0AfzcdZvi//jqPNp04lErRfoow\nS3ACuugTzhPDQuuI5rbhJJHfE6Lf8zFBfCUkgKVAc0V/UERAEawptYRcCSor\n7qdzk0EHquxihadN0HUZm1aFaIia4JiUTson4ioUNX7DT2VZvyNaKq50QGCn\nrAipvi/MxFjmsjkaq0GRhMjvDvSK7A/63qHI6lAezomjA+93xZqFzwLapmVP\nVIxdpiHXe2BFED6yEDJojgGJMRbqmNMRYy8t9aAyFwyC5PO1FG+4Hh4UusT0\nw3+Q+9jA2I5Fb3vhzMIPgZ/zQWjXZ9LshNvA0CD/HyISmHZcUnmpkNS1yPUM\nOt39gSrNw7BIArg+FARhQ2+Uk33EEe4/Ho7DhG1C9UoNGL4uUo5IR9xL1oXt\nxvjrv7x/KWoi2O5FiZylPhXv/Y40++0hQHOAqRSFr4dtCH/jbwFV4b9RGb6h\nw17F\r\n=NN/R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1gcCx7jULQi/pVP0R/GouTb1d08THkop0jzJVG7JNTAIhAIpnRE6uwOnTbrebLjNyII0AdAbHSYW+XDksppZ+1xbj"}]},"_npmUser":{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"},"directories":{},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-plugin-ledger-connector-corda_0.9.4_1632388161958_0.45004227128220853"},"_hasShrinkwrap":false}},"maintainers":[{"name":"elenaizaguirre","email":"e.izaguirre.equiza@accenture.com"}],"description":"Allows Cactus nodes to connect to a Corda ledger.","homepage":"https://github.com/hyperledger/cactus#readme","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"repository":{"type":"git","url":"git+https://github.com/elenaizaguirre/cactus.git"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com","url":"https://accenture.com"}],"author":{"name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org","url":"https://www.hyperledger.org/use/cactus"},"bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"license":"Apache-2.0","readme":"# `@elenaizaguirre/cactus-plugin-ledger-connector-corda` <!-- omit in toc -->\n\n## Table of Contents <!-- omit in toc -->\n\n- [Summary](#summary)\n- [Concepts](#concepts)\n  - [Contract Invocation JSON DSL](#contract-invocation-json-dsl)\n  - [Expressing Primitive vs Reference Types with the DLS](#expressing-primitive-vs-reference-types-with-the-dls)\n  - [Flow Invocation Types](#flow-invocation-types)\n- [Usage](#usage)\n  - [Invoke Contract (flow) with no parameters](#invoke-contract-flow-with-no-parameters)\n  - [Invoke Contract (flow) with a single integer parameter](#invoke-contract-flow-with-a-single-integer-parameter)\n  - [Invoke Contract (flow) with a custom class parameter](#invoke-contract-flow-with-a-custom-class-parameter)\n  - [Custom Configuration via Env Variables](#custom-configuration-via-env-variables)\n- [Building Docker Image Locally](#building-docker-image-locally)\n- [Example NodeDiagnosticInfo JSON Response](#example-nodediagnosticinfo-json-response)\n- [Monitoring](#monitoring)\n  - [Usage Prometheus](#usage-prometheus)\n  - [Prometheus Integration](#prometheus-integration)\n  - [Helper code](#helper-code)\n        - [response.type.ts](#responsetypets)\n        - [data-fetcher.ts](#data-fetcherts)\n        - [metrics.ts](#metricsts)\n\n## Summary\n\nThe Corda connector is written in Kotlin and ships as a Spring Boot JVM application\nthat accepts API requests and translates those into Corda RPC calls.\n\nDeploying the Corda connector therefore involves also deploying the mentioned JVM\napplication **in addition** to deploying the Cactus API server with the desired\nplugins configured.\n\n## Concepts\n\n### Contract Invocation JSON DSL\n\nOne of our core design principles for Hyperledger Cactus is to have low impact\ndeployments meaning that changes to the ledgers themselves should be kept to a\nminimum or preferably have no need for any at all. With this in mind, we had to\nsolve the challenge of providing users with the ability to invoke Corda flows\nas dynamically as possible within the confines of the strongly typed JVM contrasted\nwith the weakly typed Javascript language runtime of NodeJS.\n\nCorda might release some convenience features to ease this in the future, but\nin the meantime we have the *Contract Invocation JSON DSL* which allows developers\nto specify truly arbitrary JVM types as part of their contract invocation arguments\neven if otherwise these types would not be possible to serialize or deserialize\nwith traditional tooling such as the excellent\n[Jackson JSON Java library](https://github.com/FasterXML/jackson) or similar ones.\n\n### Expressing Primitive vs Reference Types with the DLS\n\nThe features of the DSL include expressing whether a contract invocation parameter\nis a reference or a primitive JVM data types.\nThis is a language feature that Javascript has as well to some extent, but for\nthose in need of a refresher, here's a writeup from a well known Q/A website that\nI found on the internet: [What's the difference between primitive and reference types?\n](https://stackoverflow.com/a/32049775/698470)\n\nTo keep it simple, the following types are primitive data types in the\nJava Virtual Machine (JVM) and everything else not included in the list below\ncan be safely considered a reference type:\n- boolean\n- byte\n- short\n- char\n- int\n- long\n- float\n- double\n\nIf you'd like to further clarify how this works and feel like an exciting adventure\nthen we recommend that you dive into the source code of the\n[deserializer implementation of the JSON DSL](https://github.com/hyperledger/cactus/blob/main/packages/cactus-plugin-ledger-connector-corda/src/main-server/kotlin/gen/kotlin-spring/src/main/kotlin/org/hyperledger/cactus/plugin/ledger/connector/corda/server/impl/JsonJvmObjectDeserializer.kt) and take a look at the following points of interest\nin the code located there:\n- `val exoticTypes: Map<String, Class<*>>`\n- `fun instantiate(jvmObject: JvmObject)`\n\n### Flow Invocation Types\n\nCan be **dynamic** or **tracked dynamic** and the corresponding enum values\nare defined as:\n\n```typescript\n/**\n * Determines which flow starting method will be used on the back-end when invoking the flow. Based on the value here the plugin back-end might invoke the rpc.startFlowDynamic() method or the rpc.startTrackedFlowDynamic() method. Streamed responses are aggregated and returned in a single response to HTTP callers who are not equipped to handle streams like WebSocket/gRPC/etc. do.\n * @export\n * @enum {string}\n */\nexport enum FlowInvocationType {\n    TRACKEDFLOWDYNAMIC = 'TRACKED_FLOW_DYNAMIC',\n    FLOWDYNAMIC = 'FLOW_DYNAMIC'\n}\n```\n\n[Official Corda Java Docs - startFlowDynamic()](https://api.corda.net/api/corda-os/4.7/html/api/kotlin/corda/net.corda.core.messaging/-corda-r-p-c-ops/start-flow-dynamic.html)\n\n[Official Corda Java Docs - startTrackedFlowDynamic()](https://api.corda.net/api/corda-os/4.7/html/api/kotlin/corda/net.corda.core.messaging/-corda-r-p-c-ops/start-tracked-flow-dynamic.html)\n\n\n## Usage\n\nTake a look at how the API client can be used to run transactions on a Corda ledger:\n`packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/jvm-kotlin-spring-server.test.ts`\n\n\n### Invoke Contract (flow) with no parameters\n\nBelow, we'll demonstrate invoking a simple contract with no parameters.\n\n**The contract source:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\nclass SomeCoolFlow {\n  // constructor with no arguments\n  public SomeCoolFlow() {\n    this.doSomething();\n  }\n\n  public doSomething(): void {\n    throw new RuntimeException(\"Method not implemented.\");\n  }\n}\n```\n\n**Steps to build your request:**\n\n1. Find out the fully qualified class name of your contract (flow) and set this as the value for the request parameter `flowFullClassName`\n2. Decide on your flow invocation type which largely comes down to answering the question of: Does your invocation follow a request/response pattern or more like a channel subscription where multiple updates at different times are streamed to the client in response to the invocation request? In our example we assume the simpler request/response communication pattern and therefore will set the `flowInvocationType` to `FlowInvocationType.FLOWDYNAMIC`\n3. Invoke the flow via the API client with the `params` argument being specified as an empty array `[]`\n    ```typescript\n    import { DefaultApi as CordaApi } from \"@elenaizaguirre/cactus-plugin-ledger-connector-corda\";\n    import { FlowInvocationType } from \"@elenaizaguirre/cactus-plugin-ledger-connector-corda\";\n\n    const apiUrl = \"your-cactus-host.example.com\"; // don't forget to specify the port if applicable\n    const apiClient = new CordaApi({ basePath: apiUrl });\n\n    const res = await apiClient.invokeContractV1({\n      flowFullClassName: \"com.example.organization.samples.application.flows.SomeCoolFlow\",\n      flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n      params: [],\n      timeoutMs: 60000,\n    });\n    ```\n\n### Invoke Contract (flow) with a single integer parameter\n\nBelow, we'll demonstrate invoking a simple contract with a single numeric parameter.\n\n**The contract source:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\nclass SomeCoolFlow {\n  // constructor with a primitive type long argument\n  public SomeCoolFlow(long myParameterThatIsLong) {\n    // do something with the parameter here\n  }\n}\n```\n\n**Steps to build your request:**\n\n1. Find out the fully qualified class name of your contract (flow) and set this as the value for the request parameter `flowFullClassName`\n2. Decide on your flow invocation type. More details at [Invoke Contract (flow) with no parameters](#invoke-contract-flow-with-no-parameters)\n3. Find out what is the fully qualified class name of the parameter you wish to pass in. You can do this be inspecting the sources of the contract itself. If you do not have access to those sources, then the documentation of the contract should have answers or the person who authored said contract. In our case here the fully qualified class name for the number parameter is simply `long` because it is a primitive data type and as such these can be referred to in their short form, but the fully qualified version also works such as: `java.lang.Long`.\nWhen in doubt about these, you can always consult the [official java.lang.Long Java Docs](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Long.html)\nAfter having determined the above, you can construct your first `JvmObject` JSON object as follows in order to pass in the number `42` as the first and only parameter for our flow invocation:\n    ```json\n    params: [\n      {\n        jvmTypeKind: JvmTypeKind.PRIMITIVE,\n        jvmType: {\n          fqClassName: \"long\",\n        },\n        primitiveValue: 42,\n      }\n    ]\n    ```\n1. Invoke the flow via the API client with the `params` populated as explained above:\n    ```typescript\n    import { DefaultApi as CordaApi } from \"@elenaizaguirre/cactus-plugin-ledger-connector-corda\";\n    import { FlowInvocationType } from \"@elenaizaguirre/cactus-plugin-ledger-connector-corda\";\n\n    // don't forget to specify the port if applicable\n    const apiUrl = \"your-cactus-host.example.com\";\n    const apiClient = new CordaApi({ basePath: apiUrl });\n\n    const res = await apiClient.invokeContractV1({\n      flowFullClassName: \"com.example.organization.samples.application.flows.SomeCoolFlow\",\n      flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n      params: [\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"long\",\n          },\n          primitiveValue: 42,\n        }\n      ],\n      timeoutMs: 60000,\n    });\n    ```\n\n### Invoke Contract (flow) with a custom class parameter\n\nBelow, we'll demonstrate invoking a contract with a single class instance parameter.\n\n**The contract sources:**\n\n```java\npackage com.example.organization.samples.application.flows;\n\n// contract with a class instance parameter\nclass BuildSpaceshipFlow {\n  public BuildSpaceshipFlow(SpaceshipInfo buildSpecs) {\n    // build spaceship as per the specs\n  }\n}\n```\n\n```java\npackage com.example.organization.samples.application.flows;\n\n// The type that the contract accepts as an input parameter\nclass SpaceshipInfo {\n  public SpaceshipInfo(String name, Integer seatsForHumans) {\n  }\n}\n```\n\n**Assembling and Sending your request:**\n\nInvoke the flow via the API client with the `params` populated as shown below.\n\nKey thing notice here is that we now have a class instance as a parameter for our contract (flow) invocation so we have to describe how this class instance itself will be instantiated by providing a nested array of parameters via the `jvmCtorArgs` which stands for Java Virtual Machine Constructor Arguments meaning that elements of this array will be passed in dynamically (via Reflection) to the class constructor.\n\n**Java Equivalent**\n\n```java\ncordaRpcClient.startFlowDynamic(\n  BuildSpaceshipFlow.class,\n  new SpaceshipInfo(\n    \"The last spaceship you'll ever need.\",\n    10000000\n  )\n);\n```\n\n**Cactus Invocation JSON DLS Equivalent to the Above Java Snippet**\n\n```typescript\nimport { DefaultApi as CordaApi } from \"@elenaizaguirre/cactus-plugin-ledger-connector-corda\";\nimport { FlowInvocationType } from \"@elenaizaguirre/cactus-plugin-ledger-connector-corda\";\n\n// don't forget to specify the port if applicable\nconst apiUrl = \"your-cactus-host.example.com\";\nconst apiClient = new CordaApi({ basePath: apiUrl });\n\nconst res = await apiClient.invokeContractV1({\n  flowFullClassName: \"com.example.organization.samples.application.flows.BuildSpaceshipFlow\",\n  flowInvocationType: FlowInvocationType.FLOWDYNAMIC,\n  params: [\n    {\n      jvmTypeKind: JvmTypeKind.REFERENCE,\n        jvmType: {\n        fqClassName: \"com.example.organization.samples.application.flows.SpaceshipInfo\",\n      },\n\n      jvmCtorArgs: [\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"java.lang.String\",\n          },\n          primitiveValue: \"The last spaceship you'll ever need.\",\n        },\n        {\n          jvmTypeKind: JvmTypeKind.PRIMITIVE,\n          jvmType: {\n            fqClassName: \"java.lang.Long\",\n          },\n          primitiveValue: 10000000000,\n        },\n      ],\n    }\n  ],\n  timeoutMs: 60000,\n});\n```\n\n### Custom Configuration via Env Variables\n\n```json\n{\n  \"cactus\": {\n    \"corda\": {\n      \"node\": {\n        \"host\": \"localhost\"\n      },\n      \"rpc\": {\n        \"port\": 10006,\n        \"username\": \"user1\",\n        \"password\": \"test\"\n      }\n    }\n  }\n}\n```\n\n```sh\nSPRING_APPLICATION_JSON='{\"cactus\":{\"corda\":{\"node\": {\"host\": \"localhost\"}, \"rpc\":{\"port\": 10006, \"username\":\"user1\", \"password\": \"test\"}}}}' gradle test\n```\n\n```json\n{\n  \"flowFullClassName\" : \"net.corda.samples.example.flows.ExampleFlow${\"$\"}Initiator\",\n  \"flowInvocationType\" : \"FLOW_DYNAMIC\",\n  \"params\" : [ {\n    \"jvmTypeKind\" : \"PRIMITIVE\",\n    \"jvmType\" : {\n      \"fqClassName\" : \"java.lang.Integer\"\n    },\n    \"primitiveValue\" : 42,\n    \"jvmCtorArgs\" : null\n  }, {\n    \"jvmTypeKind\" : \"REFERENCE\",\n    \"jvmType\" : {\n      \"fqClassName\" : \"net.corda.core.identity.Party\"\n    },\n    \"primitiveValue\" : null,\n    \"jvmCtorArgs\" : [ {\n      \"jvmTypeKind\" : \"REFERENCE\",\n      \"jvmType\" : {\n        \"fqClassName\" : \"net.corda.core.identity.CordaX500Name\"\n      },\n      \"primitiveValue\" : null,\n      \"jvmCtorArgs\" : [ {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"PartyB\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"New York\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"US\",\n        \"jvmCtorArgs\" : null\n      } ]\n    }, {\n      \"jvmTypeKind\" : \"REFERENCE\",\n      \"jvmType\" : {\n        \"fqClassName\" : \"org.hyperledger.cactus.plugin.ledger.connector.corda.server.impl.PublicKeyImpl\"\n      },\n      \"primitiveValue\" : null,\n      \"jvmCtorArgs\" : [ {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"EdDSA\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"X.509\",\n        \"jvmCtorArgs\" : null\n      }, {\n        \"jvmTypeKind\" : \"PRIMITIVE\",\n        \"jvmType\" : {\n          \"fqClassName\" : \"java.lang.String\"\n        },\n        \"primitiveValue\" : \"MCowBQYDK2VwAyEAoOv19eiCDJ7HzR9UrfwbFig7qcD1jkewKkkS4WF9kPA=\",\n        \"jvmCtorArgs\" : null\n      } ]\n    } ]\n  } ],\n  \"timeoutMs\" : null\n}\n```\n\n```json\nI 16:51:01 1 Client.main - nodeDiagnosticInfo=\n{\n  \"version\" : \"4.6\",\n  \"revision\" : \"85e387ea730d9be7d6dc2b23caba1ee18305af74\",\n  \"platformVersion\" : 8,\n  \"vendor\" : \"Corda Open Source\",\n  \"cordapps\" : [ {\n    \"type\" : \"Workflow CorDapp\",\n    \"name\" : \"workflows-1.0\",\n    \"shortName\" : \"Example-Cordapp Flows\",\n    \"minimumPlatformVersion\" : 8,\n    \"targetPlatformVersion\" : 8,\n    \"version\" : \"1\",\n    \"vendor\" : \"Corda Open Source\",\n    \"licence\" : \"Apache License, Version 2.0\",\n    \"jarHash\" : {\n      \"offset\" : 0,\n      \"size\" : 32,\n      \"bytes\" : \"V7ssTw0etgg3nSGk1amArB+fBH8fQUyBwIFs0DhID+0=\"\n    }\n  }, {\n    \"type\" : \"Contract CorDapp\",\n    \"name\" : \"contracts-1.0\",\n    \"shortName\" : \"Example-Cordapp Contracts\",\n    \"minimumPlatformVersion\" : 8,\n    \"targetPlatformVersion\" : 8,\n    \"version\" : \"1\",\n    \"vendor\" : \"Corda Open Source\",\n    \"licence\" : \"Apache License, Version 2.0\",\n    \"jarHash\" : {\n      \"offset\" : 0,\n      \"size\" : 32,\n      \"bytes\" : \"Xe0eoh4+T6fsq4u0QKqkVsVDMYSWhuspHqE0wlOlyqU=\"\n    }\n  } ]\n}\n```\n\n## Building Docker Image Locally\n\nThe `cccs` tag used in the below example commands is a shorthand for the\nfull name of the container image otherwise referred to as `cactus-corda-connector-server`.\n\nFrom the project root:\n\n```sh\nDOCKER_BUILDKIT=1 docker build ./packages/cactus-plugin-ledger-connector-corda/src/main-server/ -t cccs\n```\n\n## Example NodeDiagnosticInfo JSON Response\n\n```json\n{\n  \"version\": \"4.6\",\n  \"revision\": \"85e387ea730d9be7d6dc2b23caba1ee18305af74\",\n  \"platformVersion\": 8,\n  \"vendor\": \"Corda Open Source\",\n  \"cordapps\": [\n    {\n      \"type\": \"Workflow CorDapp\",\n      \"name\": \"workflows-1.0\",\n      \"shortName\": \"Obligation Flows\",\n      \"minimumPlatformVersion\": 8,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"Corda Open Source\",\n      \"licence\": \"Apache License, Version 2.0\",\n      \"jarHash\": {\n        \"bytes\": \"Vf9MllnrC7vrWxrlDE94OzPMZW7At1HhTETL/XjiAmc=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"CorDapp\",\n      \"name\": \"corda-confidential-identities-4.6\",\n      \"shortName\": \"corda-confidential-identities-4.6\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 1,\n      \"version\": \"Unknown\",\n      \"vendor\": \"Unknown\",\n      \"licence\": \"Unknown\",\n      \"jarHash\": {\n        \"bytes\": \"nqBwqHJMbLW80hmRbKEYk0eAknFiX8N40LKuGsD0bPo=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Contract CorDapp\",\n      \"name\": \"corda-finance-contracts-4.6\",\n      \"shortName\": \"Corda Finance Demo\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"R3\",\n      \"licence\": \"Open Source (Apache 2)\",\n      \"jarHash\": {\n        \"bytes\": \"a43Q/GJG6JKTZzq3U80P8L1DWWcB/D+Pl5uitEtAeQQ=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Workflow CorDapp\",\n      \"name\": \"corda-finance-workflows-4.6\",\n      \"shortName\": \"Corda Finance Demo\",\n      \"minimumPlatformVersion\": 1,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"R3\",\n      \"licence\": \"Open Source (Apache 2)\",\n      \"jarHash\": {\n        \"bytes\": \"wXdD4Iy50RaWzPp7n9s1xwf4K4MB8eA1nmhPquTMvxg=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    },\n    {\n      \"type\": \"Contract CorDapp\",\n      \"name\": \"contracts-1.0\",\n      \"shortName\": \"Obligation Contracts\",\n      \"minimumPlatformVersion\": 8,\n      \"targetPlatformVersion\": 8,\n      \"version\": \"1\",\n      \"vendor\": \"Corda Open Source\",\n      \"licence\": \"Apache License, Version 2.0\",\n      \"jarHash\": {\n        \"bytes\": \"grTZzN71Cpxw6rZe/U5SB6/ehl99B6VQ1+ZJEx1rixs=\",\n        \"offset\": 0,\n        \"size\": 32\n      }\n    }\n  ]\n}\n```\n\n## Monitoring\n\n### Usage Prometheus\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorCorda` class constructor itself, so instantiating the object of the `PluginLedgerConnectorCorda` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorCordaOptions` interface for `PluginLedgerConnectoCorda` constructor.\n\n`getPrometheusExporterMetricsEndpointV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorCorda` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'corda_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@elenaizaguirre/cactus-plugin-ledger-connector-corda/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-corda/src/test/typescript/integration/deploy-cordapp-jars-to-nodes.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@elenaizaguirre/cactus-plugin-ledger-connector-corda/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_corda_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n","readmeFilename":"README.md"}