mirror of
https://github.com/cerc-io/watcher-ts
synced 2026-09-08 08:54:05 +00:00
Add log for handling muliple returned values (#359)
Co-authored-by: Dhruv Srivastava <dhruvdhs.ds@gmail.com>
This commit is contained in:
@@ -62,6 +62,8 @@ Steps:
|
||||
# NOTE: When passed an *URL* as contract path, it is assumed that it points to an already flattened contract file.
|
||||
```
|
||||
|
||||
* Ensure dependencies are installed in the contracts repository before generating the watcher
|
||||
|
||||
* Run the following command to generate a watcher from contract(s):
|
||||
|
||||
```bash
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
"devDependencies": {
|
||||
"@ethersproject/abi": "^5.3.0",
|
||||
"@types/yargs": "^17.0.0",
|
||||
"@types/debug": "^4.1.5",
|
||||
"@types/json-bigint": "^1.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.47.1",
|
||||
"@typescript-eslint/parser": "^5.47.1",
|
||||
"eslint": "^8.35.0",
|
||||
|
||||
@@ -60,32 +60,37 @@ export class Visitor {
|
||||
|
||||
let errorMessage = '';
|
||||
|
||||
const typeName = node.returnParameters[0].typeName;
|
||||
switch (typeName.type) {
|
||||
case 'ElementaryTypeName': {
|
||||
const returnType = typeName.name;
|
||||
if (node.returnParameters.length > 1) {
|
||||
errorMessage = `No support in codegen for multiple returned values from method ${node.name}`;
|
||||
} else {
|
||||
const typeName = node.returnParameters[0].typeName;
|
||||
switch (typeName.type) {
|
||||
case 'ElementaryTypeName': {
|
||||
const returnType = typeName.name;
|
||||
|
||||
this._schema.addQuery(name, params, returnType);
|
||||
this._resolvers.addQuery(name, params, returnType);
|
||||
this._entity.addQuery(name, params, returnType);
|
||||
this._database.addQuery(name, params, returnType);
|
||||
this._client.addQuery(name, params, returnType);
|
||||
this._schema.addQuery(name, params, returnType);
|
||||
this._resolvers.addQuery(name, params, returnType);
|
||||
this._entity.addQuery(name, params, returnType);
|
||||
this._database.addQuery(name, params, returnType);
|
||||
this._client.addQuery(name, params, returnType);
|
||||
|
||||
assert(this._contract);
|
||||
this._indexer.addQuery(this._contract.name, MODE_ETH_CALL, name, params, returnType);
|
||||
assert(this._contract);
|
||||
this._indexer.addQuery(this._contract.name, MODE_ETH_CALL, name, params, returnType);
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'UserDefinedTypeName':
|
||||
errorMessage = `No support in codegen for user defined return type from method "${node.name}"`;
|
||||
break;
|
||||
|
||||
case 'ArrayTypeName':
|
||||
errorMessage = `No support in codegen for return type "${typeName.baseTypeName.name}[]" from method "${node.name}"`;
|
||||
break;
|
||||
|
||||
default:
|
||||
errorMessage = `No support in codegen for return type "${typeName.type}" from method "${node.name}"`;
|
||||
}
|
||||
case 'UserDefinedTypeName':
|
||||
errorMessage = `No support in codegen for user defined return type from method "${node.name}"`;
|
||||
break;
|
||||
|
||||
case 'ArrayTypeName':
|
||||
errorMessage = `No support in codegen for return type "${typeName.baseTypeName.name}[]" from method "${node.name}"`;
|
||||
break;
|
||||
|
||||
default:
|
||||
errorMessage = `No support in codegen for return type "${typeName.type}" from method "${node.name}"`;
|
||||
}
|
||||
|
||||
if (errorMessage !== '') {
|
||||
|
||||
Reference in New Issue
Block a user