Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ankitboghra/openapi-watchgod-merger
Merge OpenAPI and Watchgod responses to track latest status of a deposit/withdraw transaction on Ethereum Chain and Polygon Chain.
https://github.com/ankitboghra/openapi-watchgod-merger
ethereum openapi polygon watchgod web3
Last synced: 10 days ago
JSON representation
Merge OpenAPI and Watchgod responses to track latest status of a deposit/withdraw transaction on Ethereum Chain and Polygon Chain.
- Host: GitHub
- URL: https://github.com/ankitboghra/openapi-watchgod-merger
- Owner: ankitboghra
- License: mit
- Created: 2022-01-04T11:44:21.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-06-07T13:48:55.000Z (over 2 years ago)
- Last Synced: 2024-10-29T00:27:42.486Z (20 days ago)
- Topics: ethereum, openapi, polygon, watchgod, web3
- Language: JavaScript
- Homepage:
- Size: 77.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# openapi-watchgod-merger
Merge OpenAPI and Watchgod responses to track latest status of a deposit/withdraw transaction on Ethereum Chain and Polygon Chain.
## Usage
### Installation
```
npm i openapi-watchgod-merger
``````js script
import openapiWatchgodMerge from openapi-watchgod-merger// Folllowing variables represent data
// from OpenAPI and Watchgod API
const openApiDepositResponse = []
const openApiWithdrawResponse = []
const openApiBurnResponse = []
const watchGodResponse = []// below given function expects all 4 arguments
// and in same order
const mergedData = openapiWatchgodMerge(
openApiDepositResponse,
openApiWithdrawResponse,
openApiBurnResponse,
watchGodResponse
);
```## Detailed Explanation
For now, it is not giving out exact intelligent status of a transaction. It just merges all related transactions into one and appends some additional information based on below given priority.
A merged transaction will have all the undisturbed response with some additional fields added.
> NOTE: All fields added by this library starts with an underscore(e.g. `_latestStatus`)
## Deposits
Deposit transactions can be tracked via 2 places with below mentioned priorities
### Priority for Deposit Txs(Highest to Lowest)
- OpenAPI
- Watchgod### Additional fields
- `_txType`
- `_txSource`
- `_openapiTxStatus`
- `_watchgodTxStatus`
- `_latestStatus`## Withdraw
Withdraw transactions consists of 2 parts(i.e. withdraw init/burn and exit). Withdraw transactions can be tracked via 2 places with below mentioned priorities
### Priority for Withdraw+Exit Txs(Highest to Lowest)
- OpenAPI Exit
- Watchgod Exit
- OpenAPI Withdraw
- Watchgod Withdraw### Additional fields
- `_txType`
- `_txSource`
- `_burnTxHash`
- `_exitTxHash`
- `_openapiExitTxStatus`
- `_watchgodExitTxStatus`
- `_openapiBurnTxStatus`
- `_watchgodBurnTxStatus`
- `_latestStatus`## Interface
Since different APIs uses their own names for naming a variable(e.g. openapi:`transactionHash`, watchgod:`hash`), to avoid juggling between 2 naming conventions we will be parsing some common variable names.
### Interface
```
amount
blockNumber
data
from
network
rootToken
timestamp
to
txBurnHash
txHash
txStatus
txType
_txSource
_txType
_depositTxHash
_burnTxHash
_exitTxHash
_openapiExitTxStatus
_watchgodExitTxStatus
_openapiBurnTxStatus
_watchgodBurnTxStatus
_latestStatus
```If required, to parse and unparse you can use the util methods provided by this library.
- `convertOpenapiToInterface(openapiTx)`
- `convertWatchgodToInterface(watchgodTx)`
- `(watchgodTx)`### Usage
```js script
import {
convertOpenapiToInterface,
convertWatchgodToInterface,
convertInterfaceToWatchgod,
} from "openapi-watchgod-merger";const openapiTx = {
/*...*/
};
const watchgodTx = {
/*...*/
};const parsedOpenapiTx = convertOpenapiToInterface(openapiTx);
const parsedWatchgodTx = convertWatchgodToInterface(openapiTx);const unparsedWatchgodTx = convertInterfaceToWatchgod(parsedWatchgodTx);
```> Note: `convertInterfaceToWatchgod` will still have the additional fields added by library
### OpenAPI mapping
| OpenAPI | Interface |
| --------------------- | ------------ |
| `transactionHash` | `txHash` |
| `transactionStatus` | `txStatus` |
| `depositor` | `from` |
| `isPos` | `isPoS` |
| `burnTransactionHash` | `txBurnHash` |### Watchgod mapping
| Watchgod | Interface |
| -------------- | ------------ |
| `hash` | `txHash` |
| `status` | `txStatus` |
| `isPos` | `isPoS` |
| `prevBurnHash` | `txBurnHash` |## Other helpful constants
Constants can also be imported for use
- `TX_SOURCE` can be used with `_txSource`
- `TX_TYPE` can be used with `_txType````js script
import { TX_SOURCE, TX_TYPE } from "openapi-watchgod-merger";const depositTxs = (mergedTransactions) =>
mergedTransactions.filter((tx) => TX_TYPE.DEPOSIT === tx._txType);
```