initial test
This commit is contained in:
parent
7b4b873d6c
commit
fca43a75f4
|
@ -0,0 +1,14 @@
|
|||
name: Test
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
- run: npm ci
|
||||
- run: npm test
|
|
@ -0,0 +1,33 @@
|
|||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# ethereum contracts
|
||||
/contracts
|
||||
/src/ethers-contracts
|
||||
|
||||
# tsproto output
|
||||
/src/proto
|
||||
|
||||
# build
|
||||
/lib
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
|
||||
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"]
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"name": "@certusone/wormhole-token-list",
|
||||
"version": "0.0.1",
|
||||
"description": "A token list for featured markets",
|
||||
"homepage": "https://wormholenetwork.com",
|
||||
"repository": "https://github.com/certusone/wormhole-token-list",
|
||||
"scripts": {
|
||||
"test": "jest --config jestconfig.json --verbose"
|
||||
},
|
||||
"keywords": [
|
||||
"wormhole",
|
||||
"bridge",
|
||||
"token",
|
||||
"sdk",
|
||||
"solana",
|
||||
"ethereum",
|
||||
"terra",
|
||||
"bsc"
|
||||
],
|
||||
"author": "certusone",
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^27.0.2",
|
||||
"@types/node": "^16.6.1",
|
||||
"ajv": "^8.8.1",
|
||||
"jest": "^27.3.1",
|
||||
"prettier": "^2.3.2"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
test("markets.json is valid", () => {
|
||||
const Ajv = require("ajv");
|
||||
const ajv = new Ajv(); // options can be passed, e.g. {allErrors: true}
|
||||
|
||||
const schema = require("../markets.schema.json");
|
||||
|
||||
const validate = ajv.compile(schema);
|
||||
|
||||
const data = require("../markets.json");
|
||||
|
||||
const valid = validate(data);
|
||||
|
||||
expect(valid).toBe(true);
|
||||
});
|
||||
test("all markets are keys in markets", () => {
|
||||
const data = require("../markets.json");
|
||||
for (const sourceChain in data.marketsBySource) {
|
||||
for (const targetChain in data.marketsBySource[sourceChain]) {
|
||||
for (const address in data.marketsBySource[sourceChain][targetChain]) {
|
||||
data.marketsBySource[sourceChain][targetChain][address].markets.forEach(
|
||||
(market) => {
|
||||
expect(data.markets[market]).toBeDefined();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
|
@ -0,0 +1,130 @@
|
|||
{
|
||||
"markets": {
|
||||
"saber": {
|
||||
"name": "Saber",
|
||||
"link": "https://www.saber.so/"
|
||||
},
|
||||
"mercurial": {
|
||||
"name": "Mercurial",
|
||||
"link": "https://mercurial.finance/"
|
||||
},
|
||||
"jupiter": {
|
||||
"name": "Jupiter",
|
||||
"link": "https://jup.ag/"
|
||||
},
|
||||
"raydium": {
|
||||
"name": "Raydium",
|
||||
"link": "https://raydium.io/swap/"
|
||||
},
|
||||
"tulip": {
|
||||
"name": "Tulip",
|
||||
"link": "https://tulip.garden/"
|
||||
},
|
||||
"almond": {
|
||||
"name": "Almond",
|
||||
"link": "https://almond.so/"
|
||||
},
|
||||
"orca": {
|
||||
"name": "Orca",
|
||||
"link": "https://www.orca.so/"
|
||||
},
|
||||
"curve": {
|
||||
"name": "Curve",
|
||||
"link": "https://curve.fi/"
|
||||
},
|
||||
"uniswap": {
|
||||
"name": "Uniswap",
|
||||
"link": "https://app.uniswap.org/"
|
||||
},
|
||||
"anchor": {
|
||||
"name": "Anchor",
|
||||
"link": "https://app.anchorprotocol.com/"
|
||||
},
|
||||
"loop": {
|
||||
"name": "Loop Markets",
|
||||
"link": "https://dex.loop.markets/"
|
||||
},
|
||||
"quickswap": {
|
||||
"name": "Quickswap",
|
||||
"link": "https://quickswap.exchange/"
|
||||
},
|
||||
"sushi": {
|
||||
"name": "Sushi",
|
||||
"link": "https://app.sushi.com/"
|
||||
}
|
||||
},
|
||||
"marketsBySource": {
|
||||
"2": {
|
||||
"1": {
|
||||
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": {
|
||||
"symbol": "USDC",
|
||||
"markets": ["saber", "mercurial", "jupiter"]
|
||||
},
|
||||
"0xdac17f958d2ee523a2206206994597c13d831ec7": {
|
||||
"symbol": "USDT",
|
||||
"markets": ["saber", "mercurial", "jupiter"]
|
||||
},
|
||||
"0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9": {
|
||||
"symbol": "FTX Token",
|
||||
"markets": ["saber", "almond", "tulip"]
|
||||
},
|
||||
"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": {
|
||||
"symbol": "WETH",
|
||||
"markets": ["orca", "saber", "tulip"]
|
||||
},
|
||||
"0x476c5e26a75bd202a9683ffd34359c0cc15be0ff": {
|
||||
"symbol": "SRM",
|
||||
"markets": ["orca", "saber", "tulip"]
|
||||
},
|
||||
"0x6b175474e89094c44da98b954eedeac495271d0f": {
|
||||
"symbol": "DAI",
|
||||
"markets": ["saber", "mercurial", "jupiter"]
|
||||
},
|
||||
"0xa693B19d2931d498c5B318dF961919BB4aee87a5": {
|
||||
"symbol": "UST",
|
||||
"markets": ["saber", "mercurial", "jupiter"]
|
||||
},
|
||||
"0x4fabb145d64652a948d72533023f6e7a623c7c53": {
|
||||
"symbol": "BUSD",
|
||||
"markets": ["saber"]
|
||||
},
|
||||
"0xdf574c24545e5ffecb9a659c229253d4111d87e1": {
|
||||
"symbol": "HUSD",
|
||||
"markets": ["saber"]
|
||||
},
|
||||
"0x1c48f86ae57291f7686349f12601910bd8d470bb": {
|
||||
"symbol": "USDK",
|
||||
"markets": ["saber"]
|
||||
},
|
||||
"0x853d955acef822db058eb8505911ed77f175b99e": {
|
||||
"symbol": "FRAX",
|
||||
"markets": ["saber"]
|
||||
},
|
||||
"0x0316eb71485b0ab14103307bf65a021042c6d380": {
|
||||
"symbol": "HBTC",
|
||||
"markets": ["saber"]
|
||||
},
|
||||
"0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE": {
|
||||
"symbol": "SHIB",
|
||||
"markets": ["saber"]
|
||||
},
|
||||
"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b": {
|
||||
"symbol": "AXS",
|
||||
"markets": ["raydium"]
|
||||
},
|
||||
"0x6b3595068778dd592e39a122f4f5a5cf09c90fe2": {
|
||||
"symbol": "SUSHI",
|
||||
"markets": ["raydium", "tulip"]
|
||||
},
|
||||
"0x92d6c1e31e14520e676a687f0a93788b716beff5": {
|
||||
"symbol": "DYDX",
|
||||
"markets": ["raydium"]
|
||||
},
|
||||
"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984": {
|
||||
"symbol": "UNI",
|
||||
"markets": ["raydium", "tulip"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"description": "a schema for defining markets for wormhole-wrapped assets",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"markets": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/marketInfo"
|
||||
}
|
||||
},
|
||||
"marketsBySource": {
|
||||
"description": "keys of source chain id",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"1": { "$ref": "#/$defs/sourceChain" },
|
||||
"2": { "$ref": "#/$defs/sourceChain" },
|
||||
"3": { "$ref": "#/$defs/sourceChain" },
|
||||
"4": { "$ref": "#/$defs/sourceChain" },
|
||||
"5": { "$ref": "#/$defs/sourceChain" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["markets", "marketsBySource"],
|
||||
"additionalProperties": false,
|
||||
"$defs": {
|
||||
"marketInfo": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"link": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"sourceChain": {
|
||||
"description": "keys of target chain id",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"1": { "$ref": "#/$defs/targetChain" },
|
||||
"2": { "$ref": "#/$defs/targetChain" },
|
||||
"3": { "$ref": "#/$defs/targetChain" },
|
||||
"4": { "$ref": "#/$defs/targetChain" },
|
||||
"5": { "$ref": "#/$defs/targetChain" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"targetChain": {
|
||||
"description": "keys of token addresses",
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"$ref": "#/$defs/tokenInfo"
|
||||
}
|
||||
},
|
||||
"tokenInfo": {
|
||||
"description": "contains list of markets for a given source - target - address tuple",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"symbol": {
|
||||
"description": "for maintainer reference only",
|
||||
"type": "string"
|
||||
},
|
||||
"markets": {
|
||||
"description": "list of market ids that support this token",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": ["symbol", "markets"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue