{"_id":"@bajerm/cactus-verifier-client","name":"@bajerm/cactus-verifier-client","dist-tags":{"latest":"1.1.3-u1"},"versions":{"1.1.3-u1":{"name":"@bajerm/cactus-verifier-client","version":"1.1.3-u1","description":"Verifier cactus client library to communicate with validators through socket.io","main":"dist/lib/main/typescript/index.js","module":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","scripts":{"build":"tsc"},"publishConfig":{"access":"public"},"engines":{"node":">=10","npm":">=6"},"repository":{"type":"git","url":"git+https://github.com/hyperledger/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":"Michal Bajer","email":"michal.bajer@fujitsu.com","url":"https://www.fujitsu.com/global/"}],"license":"Apache-2.0","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"homepage":"https://github.com/hyperledger/cactus#readme","dependencies":{"@bajerm/cactus-api-client":"1.1.3-u1","@hyperledger/cactus-common":"1.1.3","@hyperledger/cactus-core-api":"1.1.3","@bajerm/cactus-plugin-ledger-connector-quorum":"^1.1.3-u2","jest-extended":"0.11.5","rxjs":"7.3.0"},"gitHead":"ec53718ee00de2bc333ab455b8256475248a6bb7","_id":"@bajerm/cactus-verifier-client@1.1.3-u1","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-UPm0eUkBuj1o++sRvjP9gwzGVvOheXgXx4guvXM8TTCTDsIWsk1AG01BpnMm5MNDk9aa1gV4vv1/iBtEWRXf8A==","shasum":"36acf51c53939d7a2dfc316440901ae3e6d6a55c","tarball":"https://registry.npmjs.org/@bajerm/cactus-verifier-client/-/cactus-verifier-client-1.1.3-u1.tgz","fileCount":28,"unpackedSize":97622,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGA+ayeFJGVsUqAvmc6emUolLGTGKI+sXf/sP9782ZSnAiAjTj7rTaS+Ee899j0vNc9HNBO1mwxPZeqmJrYjmJPxIg=="}]},"_npmUser":{"name":"bajerm","email":"michal.bajer@fujitsu.com"},"directories":{},"maintainers":[{"name":"bajerm","email":"michal.bajer@fujitsu.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cactus-verifier-client_1.1.3-u1_1687771900317_0.3201314366802419"},"_hasShrinkwrap":false}},"time":{"created":"2023-06-26T09:31:40.215Z","1.1.3-u1":"2023-06-26T09:31:40.525Z","modified":"2023-06-26T09:31:40.819Z"},"maintainers":[{"name":"bajerm","email":"michal.bajer@fujitsu.com"}],"description":"Verifier cactus client library to communicate with validators through socket.io","homepage":"https://github.com/hyperledger/cactus#readme","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"repository":{"type":"git","url":"git+https://github.com/hyperledger/cactus.git"},"contributors":[{"name":"Please add yourself to the list of contributors","email":"your.name@example.com","url":"https://example.com"},{"name":"Michal Bajer","email":"michal.bajer@fujitsu.com","url":"https://www.fujitsu.com/global/"}],"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":"# `@hyperledger/cactus-verifier-client`\n\n## Summary\n\nThis package provides `Verifier` and `VerifierFactory` components that can be used to communicate with compatible Cactus ledger connectors (validators) through single, unified interface.\n\n### Supported ledger connectors\n| validatorType          | cactus ledger connector plugin                  |\n| ---------------------- | ----------------------------------------------- |\n| BESU_1X<br />BESU_2X   | cactus-plugin-ledger-connector-besu             |\n| QUORUM_2X              | cactus-test-plugin-ledger-connector-quorum      |\n| CORDA_4X               | cactus-plugin-ledger-connector-corda            |\n| IROHA_1X               | cactus-plugin-ledger-connector-iroha            |\n| legacy-socketio        | cactus-plugin-ledger-connector-fabric-socketio<br />cactus-plugin-ledger-connector-go-ethereum-socketio<br />cactus-plugin-ledger-connector-sawtooth-socketio |\n\n## VerifierFactory\n- Used to create single verifier per ledger based on pre-defined configuration.\n- See [verifier-factory.test.ts](../cactus-verifier-client/src/test/typescript/unit/verifier-factory.test.ts) for unit tests.\n\n### Usage\n``` typescript\nimport {\n  VerifierFactory,\n  VerifierFactoryConfig,\n} from \"@hyperledger/cactus-verifier-client\";\n\n// Create VerifierFactory configuration that should describe all validators we want to connect to.\n// This can be read from a file or typed manually, the config is a superset of cactus-cmd-socketio-server ledger plugin config.\nconst ledgerPluginInfo: VerifierFactoryConfig = [\n    {\n        validatorID: \"some_legacy_connector\",    // required\n        validatorType: \"legacy-socketio\",        // required - see table above for supported validator types\n        validatorURL: \"https://localhost:9999\",  // legacy-socketio specific config\n        validatorKeyPath: \"./keysUr7d10R.crt\",   // legacy-socketio specific config\n        ledgerInfo: {                            // optional\n            ledgerAbstract: \"My legacy Ledger\",\n        },\n        apiInfo: [],                             // optional\n    },\n    {\n        validatorID: \"besu_openapi_connector\", // required\n        validatorType: \"BESU_2X\",              // required - see table above for supported validator types\n        basePath: \"https://localhost:9999\",    // besu specific config\n    },\n];\n\n// Instantiate single VerifierFactory from given config in your Bussiness Logic Plugin.\nconst verifierFactory = new VerifierFactory(ledgerPluginInfo);\n\n// Get ApiClient to validator with ID \"myBesuValidatorId\"\n// Second argument will determine type of returned Verifier (BesuApiClient in this case)\nconst myBesu: Verifier<BesuApiClient> = sut.getVerifier(\"myBesuValidatorId\", \"BESU_1X\"))\n\n// Second argument can be ignored for backward-compatibility\n// It will return Verifier<(union of all supported ApiClients)>\nconst client: Verifier<any> = sut.getVerifier(validatorId);\n```\n\n## Verifier\n- Common interface to all supported connector plugins.\n- See [verifier.test.ts](../cactus-verifier-client/src/test/typescript/unit/verifier.test.ts) for unit tests.\n- See [verifier-integration-with-openapi-connectors.test.ts](../cactus-test-api-client/src/test/typescript/integration/verifier-integration-with-openapi-connectors.test.ts) for integration test with Besu ledger connector.\n\n### Construction\n``` typescript\n// Use VerifierFactory to get an instance of ledger connector Verifier\nconst myBesu: Verifier<BesuApiClient> = sut.getVerifier(\"myBesuValidatorId\", \"BESU_1X\"))\n\n// Or create it manually from ledger ApiClient\nconst besuApiClientOptions = new BesuApiClientOptions({\n    basePath: \"https://localhost:9999\",\n});\nconst apiClient = new BesuApiClient(besuApiClientOptions);\nconst myBesu: Verifier<BesuApiClient> = new Verifier(\"besu_openapi_connector\", apiClient, \"info\");\n```\n\n### Interface\n- Interface is defined in  [cactus-core-api package](../cactus-core-api/src/main/typescript/client/i-verifier.ts).\n\n``` typescript\nexport interface IVerifier {\n  // Immediately sends request to the validator, doesn't report any error or responses.\n  sendAsyncRequest(\n    contract: Record<string, unknown>,\n    method: Record<string, unknown>,\n    args: Record<string, unknown>,\n  ): Promise<void>;\n\n  // Sends request to be executed on the ledger, watches and reports any error and the response from a ledger.\n  sendSyncRequest(\n    contract: Record<string, unknown>,\n    method: Record<string, unknown>,\n    args: Record<string, unknown>,\n  ): Promise<any>;\n\n  // Start monitoring for new events / blocks from underlying ledger.\n  startMonitor(\n    id: string,\n    options: Record<string, unknown>,\n    eventListener: IVerifierEventListener,\n  ): void;\n\n  // Stops the monitor for specified app, removes it's subscription from internal storage.\n  stopMonitor(id?: string): void;\n}\n```\n","readmeFilename":"README.md"}