diff --git a/packages/registry/README.md b/packages/registry/README.md new file mode 100644 index 00000000..60b35a86 --- /dev/null +++ b/packages/registry/README.md @@ -0,0 +1,3 @@ +# `@evmos/registry` + +> TODO: description diff --git a/packages/registry/lib/chainConfig/atom.ts b/packages/registry/lib/chainConfig/atom.ts new file mode 100644 index 00000000..bb8ae2a9 --- /dev/null +++ b/packages/registry/lib/chainConfig/atom.ts @@ -0,0 +1,54 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const atom: Chain = { + prefix: 'cosmos', + gasPriceStep: { low: '0.005', average: '0.025', high: '0.04' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'cosmoshub-4', + identifier: 'Cosmos', + chainName: 'Cosmos Hub', + clientId: '07-tendermint-3', + rest: [ + 'https://cosmos-lcd.quickapi.com:443', + 'https://lcd-cosmoshub.whispernode.com', + 'https://lcd-cosmoshub.blockapsis.com', + 'https://rest-cosmoshub.ecostake.com', + 'https://api.cosmoshub.pupmos.network', + 'https://lcd.cosmos.ezstaking.io', + 'https://api-cosmoshub-ia.notional.ventures/', + ], + jrpc: [ + 'https://cosmos-rpc.quickapi.com:443', + 'https://rpc-cosmoshub.whispernode.com', + 'https://rpc-cosmoshub.blockapsis.com', + 'https://cosmoshub.validator.network/', + 'https://rpc.cosmoshub.strange.love', + 'https://rpc.cosmos.network:443', + 'https://rpc-cosmoshub.ecostake.com', + 'https://rpc.cosmoshub.pupmos.network', + 'https://cosmos-rpc.polkachu.com', + 'https://rpc.cosmos.ezstaking.io', + 'https://rpc-cosmoshub-ia.notional.ventures/', + ], + rpc: ['https://cosmoshub-rpc.stakely.io/'], + currencies: [ + { coinDenom: 'ATOM', coinMinDenom: 'uatom', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-292', + sourceIBCDenomToEvmos: + 'ibc/19DD710119533524061885A6F190B18AF28D9537E2BAE37F32A62C1A25979287', + destinationChannel: 'channel-3', + jsonRPC: ['https://cosmoshub-rpc.stakely.io/'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/cosmos/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/axelar.ts b/packages/registry/lib/chainConfig/axelar.ts new file mode 100644 index 00000000..4af94db9 --- /dev/null +++ b/packages/registry/lib/chainConfig/axelar.ts @@ -0,0 +1,51 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const axelar: Chain = { + prefix: 'axelar', + gasPriceStep: { low: '0.00005', average: '0.00025', high: '0.0004' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'axelar-dojo-1', + identifier: 'Axelar', + chainName: 'Axelar', + clientId: '07-tendermint-69', + rest: [ + 'https://lcd-axelar.imperator.co:443', + 'https://axelar-lcd.quickapi.com:443', + 'https://axelar-rest.chainode.tech:443', + 'https://axelar-lcd.qubelabs.io:443', + 'https://api-1.axelar.nodes.guru:443', + 'https://api-axelar-ia.cosmosia.notional.ventures/', + 'https://axelar-api.polkachu.com', + ], + jrpc: [ + 'https://rpc-axelar.imperator.co:443', + 'https://axelar-rpc.quickapi.com:443', + 'https://axelar-rpc.chainode.tech:443', + 'https://axelar-rpc.pops.one:443', + 'https://axelar-rpc.qubelabs.io:443', + 'https://rpc-1.axelar.nodes.guru:443', + 'https://rpc-axelar-ia.cosmosia.notional.ventures/', + 'https://axelar-rpc.polkachu.com', + ], + rpc: ['https://axelar-grpc.quantnode.tech:9090'], + currencies: [ + { coinDenom: 'AXL', coinMinDenom: 'uaxl', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-22', + sourceIBCDenomToEvmos: + 'ibc/73D370D177CC659EA123B423D1AC194F0733537E5A346ECEA1DCBC8FEBB45FD3', + destinationChannel: 'channel-21', + jsonRPC: ['https://axelar-mainnet-rpc.allthatnode.com:26657'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/axelar/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/emoney.ts b/packages/registry/lib/chainConfig/emoney.ts new file mode 100644 index 00000000..cafb03d9 --- /dev/null +++ b/packages/registry/lib/chainConfig/emoney.ts @@ -0,0 +1,50 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const emoney: Chain = { + prefix: 'emoney', + gasPriceStep: { low: '0.005', average: '0.025', high: '0.04' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'emoney-3', + chainName: 'EMoney', + identifier: 'Emoney', + clientId: '07-tendermint-75', + rest: [ + 'https://lcd-emoney.keplr.app', + 'https://emoney.validator.network/api', + 'https://api-emoney-ia.cosmosia.notional.ventures', + 'https://api.emoney.freak12techno.io', + 'https://e-money-api.ibs.team', + 'https://api.emoney.bh.rocks', + ], + jrpc: [ + 'https://rpc-emoney.keplr.app', + 'https://emoney.validator.network', + 'https://rpc.emoney.badgerbite.xyz:443', + 'https://rpc-emoney-ia.cosmosia.notional.ventures', + 'https://rpc.emoney.freak12techno.io', + 'https://e-money-rpc.ibs.team', + 'https://rpc-emoney.goldenratiostaking.net', + 'https://rpc.emoney.bh.rocks', + ], + rpc: ['https://rpc-emoney.keplr.app'], + currencies: [ + { coinDenom: 'emd', coinMinDenom: 'eeur', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-28', + sourceIBCDenomToEvmos: + 'ibc/10E2FD6A073F2746143FFF978B61C3813B773CBC0647E850A4A562FFFA8F9732', + destinationChannel: 'channel-24', + jsonRPC: ['https://rpc-emoney.keplr.app'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/emoney/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/evmos.ts b/packages/registry/lib/chainConfig/evmos.ts new file mode 100644 index 00000000..2d955abb --- /dev/null +++ b/packages/registry/lib/chainConfig/evmos.ts @@ -0,0 +1,68 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const evmos: Chain = { + prefix: 'evmos', + gasPriceStep: { + low: '10000000000', + average: '25000000000', + high: '40000000000', + }, + feeMarket: { gas: '350000', amount: '50000', convert: '10500000' }, + bip44: { coinType: '60' }, + configurations: [ + { + chainId: 'evmos_9001-2', + chainName: 'Evmos', + identifier: 'Evmos', + clientId: '', + rest: [ + 'https://lcd-evmos.whispernode.com', + 'https://rest.bd.evmos.org:1317', + 'https://lcd.evmos.ezstaking.io', + 'https://api-evmos-ia.cosmosia.notional.ventures', + 'https://lcd.evmos.posthuman.digital', + 'https://api.evmos.interbloc.org', + 'https://lcd.evmos.bh.rocks', + ], + jrpc: [ + 'https://rpc-evmos.whispernode.com', + 'https://tendermint.bd.evmos.org:26657', + 'https://rpc.evmos.ezstaking.io', + 'https://rpc-evmos-ia.cosmosia.notional.ventures:443', + 'https://rpc.evmos.posthuman.digital', + 'https://rpc.evmos.interbloc.org', + 'https://rpc.evmos.nodestake.top', + 'https://rpc-evmos.ecostake.com', + 'https://rpc.evmos.bh.rocks', + ], + web3: [ + 'https://jsonrpc-rpcaas-evmos-mainnet.ubiquity.blockdaemon.tech', + 'https://eth.bd.evmos.org:8545', + 'https://jsonrpc-evmos-ia.cosmosia.notional.ventures', + 'https://evmos-json-rpc.stakely.io', + 'https://jsonrpc.evmos.nodestake.top', + 'https://json-rpc.evmos.bh.rocks', + ], + rpc: ['https://grpc.bd.evmos.org:9090'], + currencies: [ + { coinDenom: 'EVMOS', coinMinDenom: 'aevmos', coinDecimals: '18' }, + ], + source: { + sourceChannel: '', + sourceIBCDenomToEvmos: '', + destinationChannel: '', + jsonRPC: [''], + }, + explorer: [ + { link: 'https://mintscan.io/evmos', type: 'cosmos' }, + { link: 'https://evm.evmos.org', type: 'evm' }, + ], + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/evmos/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/gravity.ts b/packages/registry/lib/chainConfig/gravity.ts new file mode 100644 index 00000000..fad07238 --- /dev/null +++ b/packages/registry/lib/chainConfig/gravity.ts @@ -0,0 +1,46 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const gravity: Chain = { + prefix: 'gravity', + gasPriceStep: { low: '0.000', average: '0.000', high: '0.035' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'gravity-bridge-3', + chainName: 'Gravity Bridge', + identifier: 'Gravity', + clientId: '07-tendermint-3', + rest: [ + 'https://gravitychain.io:1317', + 'https://lcd.gravity-bridge.ezstaking.io', + 'https://api-gravitybridge-ia.notional.ventures', + 'https://api.gravity-bridge.nodestake.top', + ], + jrpc: [ + 'https://gravitychain.io:26657', + 'http://gravity-bridge-1-08.nodes.amhost.net:26657', + 'https://gravity-rpc.polkachu.com', + 'https://rpc.gravity-bridge.ezstaking.io', + 'https://rpc-gravitybridge-ia.notional.ventures', + 'https://rpc.gravity-bridge.nodestake.top', + ], + rpc: ['https://lcd-gravity-bridge.keplr.app:9090/'], + currencies: [ + { coinDenom: 'GRAV', coinMinDenom: 'ugraviton', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-65', + sourceIBCDenomToEvmos: + 'ibc/6B207CDA2448604B83A0674AADD830C490C1AAB7D568135E52589E96A00B6EEF', + destinationChannel: 'channel-8', + jsonRPC: ['https://gravitychain.io:26657/'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/gravity-bridge/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/index.ts b/packages/registry/lib/chainConfig/index.ts new file mode 100644 index 00000000..417367cb --- /dev/null +++ b/packages/registry/lib/chainConfig/index.ts @@ -0,0 +1,16 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +export * from './atom.js' +export * from './axelar.js' +export * from './emoney.js' +export * from './evmos.js' +export * from './gravity.js' +export * from './juno.js' +export * from './kujira.js' +export * from './osmosis.js' +export * from './regen.js' +export * from './stargaze.js' +export * from './stride.js' +export * from './teritori.js' diff --git a/packages/registry/lib/chainConfig/juno.ts b/packages/registry/lib/chainConfig/juno.ts new file mode 100644 index 00000000..7d2d457a --- /dev/null +++ b/packages/registry/lib/chainConfig/juno.ts @@ -0,0 +1,49 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const juno: Chain = { + prefix: 'juno', + gasPriceStep: { low: '0.03', average: '0.04', high: '0.05' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'juno-1', + chainName: 'Juno', + identifier: 'Juno', + clientId: '07-tendermint-14', + rest: [ + 'https://lcd-juno.itastakers.com', + 'https://rest-juno.ecostake.com', + 'https://juno-api.lavenderfive.com:443', + 'https://api.juno.pupmos.network', + 'https://api-juno-ia.cosmosia.notional.ventures', + 'https://juno-api.polkachu.com', + ], + jrpc: [ + 'https://rpc-juno.itastakers.com', + 'https://rpc-juno.ecostake.com', + 'https://juno-rpc.polkachu.com', + 'https://juno-rpc.lavenderfive.com:443', + 'https://rpc-juno-ia.cosmosia.notional.ventures', + 'https://rpc.juno.chaintools.tech', + 'https://rpc.juno.pupmos.network', + ], + rpc: ['https://rpc-juno.whispernode.com'], + currencies: [ + { coinDenom: 'JUNO', coinMinDenom: 'ujuno', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-70', + sourceIBCDenomToEvmos: + 'ibc/9B990F95D85E7CA8C46544975776CAA20A3DEE3507EEA829A4000D8D65617F6D', + destinationChannel: 'channel-5', + jsonRPC: ['https://rpc-juno.whispernode.com'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/juno/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/kujira.ts b/packages/registry/lib/chainConfig/kujira.ts new file mode 100644 index 00000000..16fb71f9 --- /dev/null +++ b/packages/registry/lib/chainConfig/kujira.ts @@ -0,0 +1,61 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const kujira: Chain = { + prefix: 'kujira', + gasPriceStep: { low: '0.01', average: '0.025', high: '0.03' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'kaiyo-1', + chainName: 'kujira', + identifier: 'Kujira', + clientId: '07-tendermint-53', + rest: [ + 'https://lcd.kaiyo.kujira.setten.io', + 'https://lcd-kujira.whispernode.com', + 'https://kujira-api.lavenderfive.com:443', + 'https://kujira-api.polkachu.com', + 'https://rest-kujira.ecostake.com', + 'https://api.kujira.chaintools.tech', + 'https://api-kujira-ia.cosmosia.notional.ventures', + 'https://kujira-lcd.wildsage.io', + 'https://api-kujira.nodeist.net', + 'https://kujira-api.ibs.team', + 'https://api-kujira.starsquid.io', + 'https://kujira.api.kjnodes.com', + 'https://kuji-api.kleomedes.network', + ], + jrpc: [ + 'https://rpc-kujira.whispernode.com', + 'https://rpc.kaiyo.kujira.setten.io', + 'https://kujira-rpc.polkachu.com', + 'https://rpc-kujira.ecostake.com', + 'https://kujira-rpc.lavenderfive.com:443', + 'https://rpc.kujira.chaintools.tech', + 'https://rpc-kujira-ia.cosmosia.notional.ventures', + 'https://kujira-rpc.wildsage.io', + 'https://rpc-kujira.nodeist.net', + 'https://kujira-rpc.ibs.team', + 'https://rpc-kujira.starsquid.io', + 'https://kujira.rpc.kjnodes.com', + ], + rpc: ['https://rpc.kaiyo.kujira.setten.io'], + currencies: [ + { coinDenom: 'KUJI', coinMinDenom: 'ukuji', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-23', + sourceIBCDenomToEvmos: + 'ibc/F3AA7EF362EC5E791FE78A0F4CCC69FEE1F9A7485EB1A8CAB3F6601C00522F10', + destinationChannel: 'channel-18', + jsonRPC: ['https://rpc.kaiyo.kujira.setten.io'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/kujira/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/osmosis.ts b/packages/registry/lib/chainConfig/osmosis.ts new file mode 100644 index 00000000..75583d60 --- /dev/null +++ b/packages/registry/lib/chainConfig/osmosis.ts @@ -0,0 +1,52 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const osmosis: Chain = { + prefix: 'osmo', + gasPriceStep: { low: '0.005', average: '0.025', high: '0.04' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'osmosis-1', + chainName: 'Osmosis', + identifier: 'Osmosis', + clientId: '07-tendermint-0', + rest: [ + 'https://osmosis-lcd.quickapi.com:443', + 'https://lcd-osmosis.whispernode.com', + 'https://lcd-osmosis.blockapsis.com', + 'https://rest-osmosis.ecostake.com', + 'https://api-osmosis-ia.notional.ventures', + 'https://lcd.osmosis.zone', + 'https://api.osmosis.interbloc.org', + ], + jrpc: [ + 'https://osmosis-rpc.quickapi.com:443', + 'https://rpc-osmosis.whispernode.com', + 'https://osmosis.validator.network', + 'https://rpc-osmosis.blockapsis.com', + 'https://rpc-osmosis.ecostake.com', + 'https://osmosis-rpc.polkachu.com', + 'https://rpc-osmosis-ia.notional.ventures', + 'https://rpc.osmosis.zone', + 'https://rpc.osmosis.interbloc.org', + ], + rpc: [''], + currencies: [ + { coinDenom: 'OSMO', coinMinDenom: 'uosmo', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-204', + sourceIBCDenomToEvmos: + 'ibc/6AE98883D4D5D5FF9E50D7130F1305DA2FFA0C652D1DD9C123657C6B4EB2DF8A', + destinationChannel: 'channel-0', + jsonRPC: ['https://rpc-osmosis.blockapsis.com/'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/osmosis/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/regen.ts b/packages/registry/lib/chainConfig/regen.ts new file mode 100644 index 00000000..5cd4a04f --- /dev/null +++ b/packages/registry/lib/chainConfig/regen.ts @@ -0,0 +1,45 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const regen: Chain = { + prefix: 'regen', + gasPriceStep: { low: '0.005', average: '0.025', high: '0.04' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'regen-1', + chainName: 'Regen Network', + identifier: 'Regen', + clientId: '07-tendermint-67', + rest: [ + 'https://rest-regen.ecostake.com', + 'http://public-rpc.regen.vitwit.com:1317', + 'https://regen.stakesystems.io', + 'https://api-regen-ia.cosmosia.notional.ventures', + ], + jrpc: [ + 'https://rpc-regen.ecostake.com', + 'http://public-rpc.regen.vitwit.com:26657', + 'https://regen.stakesystems.io:2053', + 'http://rpc.regen.forbole.com:80', + 'https://rpc-regen-ia.cosmosia.notional.ventures', + ], + rpc: ['https://rpc-regen.ecostake.com'], + currencies: [ + { coinDenom: 'REGEN', coinMinDenom: 'uregen', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-44', + sourceIBCDenomToEvmos: + 'ibc/3F0E005C3822C1BBA60E7CC368630441B1F5055FBD58A004F729A98FE1AA17B0', + destinationChannel: 'channel-20', + jsonRPC: ['https://rpc-regen.ecostake.com'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/regen/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/stargaze.ts b/packages/registry/lib/chainConfig/stargaze.ts new file mode 100644 index 00000000..80ca07fc --- /dev/null +++ b/packages/registry/lib/chainConfig/stargaze.ts @@ -0,0 +1,63 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const stargaze: Chain = { + prefix: 'stars', + gasPriceStep: { low: '0.005', average: '0.025', high: '0.04' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'stargaze-1', + chainName: 'Stargaze', + identifier: 'Stars', + clientId: '07-tendermint-41', + rest: [ + 'https://rest.stargaze-apis.com', + 'https://api.stargaze.pupmos.network', + 'https://api-stargaze.ezstaking.dev', + 'https://api.stars.kingnodes.com', + 'https://api-stargaze-ia.cosmosia.notional.ventures', + 'https://stargaze.c29r3.xyz:443/api', + 'https://stargaze-rapipc.polkachu.com', + 'https://api.stargaze.nodestake.top', + 'https://stargaze-api.ibs.team', + 'https://api-stargaze.d-stake.xyz', + 'https://api.stargaze.silentvalidator.com', + ], + jrpc: [ + 'https://rpc.stargaze-apis.com', + 'https://rpc.stargaze.pupmos.network', + 'https://rpc-stargaze.ezstaking.dev', + 'https://rpc.stars.kingnodes.com', + 'https://stargaze-rpc.polkachu.com', + 'https://rpc-stargaze-ia.cosmosia.notional.ventures', + 'https://rpc.stargaze.nodestake.top', + 'https://stargaze-rpc.ibs.team', + 'https://rpc-stargaze.d-stake.xyz', + 'https://rpc.stargaze.silentvalidator.com', + ], + rpc: [ + 'https://rpc.stargaze-apis.com/', + 'https://rpc-stargaze.pupmos.network', + 'https://rpc-stargaze.ezstaking.dev', + 'https://rpc.stars.kingnodes.com/', + 'https://stargaze-rpc.polkachu.com', + ], + currencies: [ + { coinDenom: 'STARS', coinMinDenom: 'ustars', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-46', + sourceIBCDenomToEvmos: + 'ibc/F9C792DF71F960BB9EF698493B61E29C1EBB8FCD56B1F8BB08C86871F5F497C0', + destinationChannel: 'channel-13', + jsonRPC: ['stargaze-grpc.polkachu.com:13790'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/stargaze/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/stride.ts b/packages/registry/lib/chainConfig/stride.ts new file mode 100644 index 00000000..c1f4f4f7 --- /dev/null +++ b/packages/registry/lib/chainConfig/stride.ts @@ -0,0 +1,54 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const stride: Chain = { + prefix: 'stride', + gasPriceStep: { low: '0.01', average: '0.025', high: '0.03' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'stride-1', + chainName: 'stride', + identifier: 'Stride', + rpc: ['https://stride-rpc.polkachu.com:443'], + rest: [ + 'https://stride-api.polkachu.com', + 'https://stride.api.chandrastation.com', + 'https://api.stride.bh.rocks', + 'http://api-stride.nodeist.net', + 'https://stride-api.lavenderfive.com', + 'https://stride.rest.interchain.ivaldilabs.xyz', + 'https://api.stride.nodestake.top', + 'https://api-stride.d-stake.xyz', + ], + jrpc: [ + 'https://stride-rpc.polkachu.com', + 'https://stride.rpc.chandrastation.com', + 'https://rpc.stride.bh.rocks', + 'http://rpc-stride.nodeist.net', + 'https://stride-rpc.lavenderfive.com', + 'https://stride.rpc.interchain.ivaldilabs.xyz', + 'https://rpc.stride.nodestake.top', + 'https://rpc-stride.d-stake.xyz', + 'https://rpc.stride.silentvalidator.com', + 'https://stride.rpc.kjnodes.com', + ], + clientId: '07-tendermint-80', + currencies: [ + { coinDenom: 'STRD', coinMinDenom: 'ustrd', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-16', + sourceIBCDenomToEvmos: + 'ibc/A3643FAA80C7DA7E72B23853340F6EAD4F3A698CDC39CE42FBF23F3A4A6E3803', + destinationChannel: 'channel-27', + jsonRPC: ['https://stride-rpc.polkachu.com:443'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/stride/txs', + }, + ], +} diff --git a/packages/registry/lib/chainConfig/teritori.ts b/packages/registry/lib/chainConfig/teritori.ts new file mode 100644 index 00000000..864919b7 --- /dev/null +++ b/packages/registry/lib/chainConfig/teritori.ts @@ -0,0 +1,46 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Chain } from '../types' + +export const teritori: Chain = { + prefix: 'tori', + gasPriceStep: { low: '0.01', average: '0.025', high: '0.03' }, + bip44: { coinType: '118' }, + configurations: [ + { + chainId: 'teritori-1', + chainName: 'teritori', + identifier: 'Teritori', + clientId: '07-tendermint-89', + rest: [ + 'https://teritori-api.lavenderfive.com:443', + 'https://teritori-api.polkachu.com', + 'https://api-teritori.nodeist.net', + 'https://api.teritori.nodestake.top', + 'https://rest.mainnet.teritori.com', + ], + jrpc: [ + 'https://teritori-rpc.lavenderfive.com:443', + 'https://teritori-rpc.polkachu.com', + 'https://rpc-teritori.nodeist.net', + 'https://rpc.teritori.nodestake.top', + 'https://teritori.nodejumper.io', + ], + rpc: ['https://rpc.mainnet.teritori.com'], + currencies: [ + { coinDenom: 'TORI', coinMinDenom: 'utori', coinDecimals: '6' }, + ], + source: { + sourceChannel: 'channel-1', + sourceIBCDenomToEvmos: + 'IBC/18D5C3CDDF1DEE108CE4BF0A7E0262D94D11AB06A37F68EA38F70CC92C5D894F', + destinationChannel: 'channel-35', + jsonRPC: ['https://rpc.mainnet.teritori.com'], + }, + configurationType: 'mainnet', + explorerTxUrl: 'https://www.mintscan.io/teritori/txs', + }, + ], +} diff --git a/packages/registry/lib/index.ts b/packages/registry/lib/index.ts new file mode 100644 index 00000000..e4938cab --- /dev/null +++ b/packages/registry/lib/index.ts @@ -0,0 +1,7 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +export * from './types.js' +export * as chain from './chainConfig/index.js' +export * as token from './tokens/index.js' diff --git a/packages/registry/lib/tokens/atom.ts b/packages/registry/lib/tokens/atom.ts new file mode 100644 index 00000000..f9731e15 --- /dev/null +++ b/packages/registry/lib/tokens/atom.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const atom: Token = { + coinDenom: 'ATOM', + minCoinDenom: 'uatom', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/A4DB47A9D3CF9A068D454513891B526702455D3EF08FB9EB558C561F9DC2B701', + description: 'The native token of Cosmos Hub', + name: 'Cosmos Hub', + channel: 'channel-3', + isEnabled: true, + erc20Address: '0xC5e00D3b04563950941f7137B5AfA3a534F0D6d6', + ibc: { sourceDenom: 'uatom', source: 'Cosmos' }, + hideFromTestnet: false, + coingeckoId: 'cosmos', + category: 'cosmos', + coinSourcePrefix: 'cosmos', +} diff --git a/packages/registry/lib/tokens/axlDai.ts b/packages/registry/lib/tokens/axlDai.ts new file mode 100644 index 00000000..ae5a4fc1 --- /dev/null +++ b/packages/registry/lib/tokens/axlDai.ts @@ -0,0 +1,31 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const axlDai: Token = { + coinDenom: 'axlDAI', + minCoinDenom: 'dai-wei', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axldai.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axldai.png', + type: 'IBC', + exponent: '18', + cosmosDenom: + 'ibc/CBA4784581AD4BEF308C536A3CD44D4A940A520E61B0D1E4FB115C539F61DEE5', + description: 'DAI Stablecoin on Axelar', + name: 'DAI by Axelar', + channel: 'channel-21', + isEnabled: true, + erc20Address: '0x4A2a90D444DbB7163B5861b772f882BbA394Ca67', + ibc: { sourceDenom: 'axldai', source: 'Axelar' }, + hideFromTestnet: true, + handledByExternalUI: [ + { url: 'https://satellite.money/', handlingAction: 'Deposit and Withdraw' }, + ], + coingeckoId: 'dai', + category: 'stablecoin', + coinSourcePrefix: 'axelar', +} diff --git a/packages/registry/lib/tokens/axlUsdc.ts b/packages/registry/lib/tokens/axlUsdc.ts new file mode 100644 index 00000000..43d0240f --- /dev/null +++ b/packages/registry/lib/tokens/axlUsdc.ts @@ -0,0 +1,31 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const axlUsdc: Token = { + coinDenom: 'axlUSDC', + minCoinDenom: 'uusdc', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlusdc.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlusdc.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/63C53CBDF471D4E867366ABE2E631197257118D1B2BEAD1946C8A408F96464C3', + description: "Circle's stablecoin on Axelar", + name: 'USD Coin by Axelar', + channel: 'channel-21', + isEnabled: true, + erc20Address: '0x15C3Eb3B621d1Bff62CbA1c9536B7c1AE9149b57', + ibc: { sourceDenom: 'uusdc', source: 'Axelar' }, + hideFromTestnet: false, + handledByExternalUI: [ + { url: 'https://satellite.money/', handlingAction: 'Deposit and Withdraw' }, + ], + coingeckoId: 'usd-coin', + category: 'stablecoin', + coinSourcePrefix: 'axelar', +} diff --git a/packages/registry/lib/tokens/axlUsdt.ts b/packages/registry/lib/tokens/axlUsdt.ts new file mode 100644 index 00000000..97050ba0 --- /dev/null +++ b/packages/registry/lib/tokens/axlUsdt.ts @@ -0,0 +1,31 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const axlUsdt: Token = { + coinDenom: 'axlUSDT', + minCoinDenom: 'uusdt', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlusdt.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlusdt.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/F11C8CB7743E4B5FDCEA7C97F3B2C115E1931C5614B84C183DAC439B4C919D94', + description: 'USD Tether Stablecoin on Axelar', + name: 'USDT by Axelar', + channel: 'channel-21', + isEnabled: true, + erc20Address: '0xe01C6D4987Fc8dCE22988DADa92d56dA701d0Fe0', + ibc: { sourceDenom: 'uusdt', source: 'Axelar' }, + hideFromTestnet: true, + handledByExternalUI: [ + { url: 'https://satellite.money/', handlingAction: 'Deposit and Withdraw' }, + ], + coingeckoId: 'tether', + category: 'stablecoin', + coinSourcePrefix: 'axelar', +} diff --git a/packages/registry/lib/tokens/axlWbtc.ts b/packages/registry/lib/tokens/axlWbtc.ts new file mode 100644 index 00000000..a928267f --- /dev/null +++ b/packages/registry/lib/tokens/axlWbtc.ts @@ -0,0 +1,31 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const axlWbtc: Token = { + coinDenom: 'axlWBTC', + minCoinDenom: 'wbtc-satoshi', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlwbtc.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlwbtc.png', + type: 'IBC', + exponent: '8', + cosmosDenom: + 'ibc/C834CD421B4FD910BBC97E06E86B5E6F64EA2FE36D6AE0E4304C2E1FB1E7333C', + description: 'Wrapped Bitcoin on Axelar', + name: 'Wrapped Bitcoin on Axelar', + channel: 'channel-21', + isEnabled: true, + erc20Address: '0xF5b24c0093b65408ACE53df7ce86a02448d53b25', + ibc: { sourceDenom: 'wbtc-satoshi', source: 'Axelar' }, + hideFromTestnet: false, + handledByExternalUI: [ + { url: 'https://satellite.money/', handlingAction: 'Deposit and Withdraw' }, + ], + coingeckoId: 'wrapped-bitcoin', + category: 'bitcoin', + coinSourcePrefix: 'axelar', +} diff --git a/packages/registry/lib/tokens/axlWeth.ts b/packages/registry/lib/tokens/axlWeth.ts new file mode 100644 index 00000000..5ce05d85 --- /dev/null +++ b/packages/registry/lib/tokens/axlWeth.ts @@ -0,0 +1,31 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const axlWeth: Token = { + coinDenom: 'axlWETH', + minCoinDenom: 'weth-wei', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlweth.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/axelar/images/axlweth.png', + type: 'IBC', + exponent: '18', + cosmosDenom: + 'ibc/356EDE917394B2AEF7F915EB24FA683A0CCB8D16DD4ECCEDC2AD0CEC6B66AC81', + description: 'Wrapped Ether on Axelar', + name: 'Wrapped Ether on Axelar', + channel: 'channel-21', + isEnabled: true, + erc20Address: '0x50dE24B3f0B3136C50FA8A3B8ebc8BD80a269ce5', + ibc: { sourceDenom: 'weth-wei', source: 'Axelar' }, + hideFromTestnet: false, + handledByExternalUI: [ + { url: 'https://satellite.money/', handlingAction: 'Deposit and Withdraw' }, + ], + coingeckoId: 'weth', + category: 'ethereum', + coinSourcePrefix: 'axelar', +} diff --git a/packages/registry/lib/tokens/eeur.ts b/packages/registry/lib/tokens/eeur.ts new file mode 100644 index 00000000..901ec1db --- /dev/null +++ b/packages/registry/lib/tokens/eeur.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const eeur: Token = { + coinDenom: 'EEUR', + minCoinDenom: 'eeur', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/emoney/images/eeur.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/emoney/images/eeur.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/AB40F54CC4BAF9C4FDB5CB5BDFC4D6CDB475BFE84BCEAF4F72F02EDAEED60F05', + description: 'e-Money EUR stablecoin', + name: 'e-Money EUR', + channel: 'channel-24', + isEnabled: true, + erc20Address: '0x5db67696C3c088DfBf588d3dd849f44266ff0ffa', + ibc: { sourceDenom: 'eeur', source: 'Emoney' }, + hideFromTestnet: false, + coingeckoId: 'e-money-eur', + category: 'stablecoin', + coinSourcePrefix: 'emoney', +} diff --git a/packages/registry/lib/tokens/evmos.ts b/packages/registry/lib/tokens/evmos.ts new file mode 100644 index 00000000..e9485cb0 --- /dev/null +++ b/packages/registry/lib/tokens/evmos.ts @@ -0,0 +1,27 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const evmos: Token = { + coinDenom: 'EVMOS', + minCoinDenom: 'EVMOS', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/evmos/images/evmos.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/evmos/images/evmos.png', + type: 'IBC', + exponent: '18', + cosmosDenom: 'aevmos', + description: 'EVMOS', + name: 'EVMOS', + channel: '', + isEnabled: true, + erc20Address: '0xD4949664cD82660AaE99bEdc034a0deA8A0bd517', + ibc: { sourceDenom: 'aevmos', source: 'Evmos' }, + hideFromTestnet: false, + coingeckoId: 'evmos', + category: 'cosmos', + coinSourcePrefix: 'evmos', +} diff --git a/packages/registry/lib/tokens/gDai.ts b/packages/registry/lib/tokens/gDai.ts new file mode 100644 index 00000000..7d5dbac5 --- /dev/null +++ b/packages/registry/lib/tokens/gDai.ts @@ -0,0 +1,30 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const gDai: Token = { + coinDenom: 'gDAI', + minCoinDenom: 'dai-wei', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/gdai.png', + type: 'ERC-20', + exponent: '18', + cosmosDenom: + 'ibc/F96A7F81E8F82E4EE81F94D507CD257319EFB70FE46E23B4953F63B62E855603', + description: 'Dai Stablecoin via Gravity Bridge', + name: 'Dai Stablecoin', + channel: 'channel-8', + isEnabled: true, + erc20Address: '0xd567B3d7B8FE3C79a1AD8dA978812cfC4Fa05e75', + ibc: { + sourceDenom: 'gravity0x6B175474E89094C44Da98b954EedeAC495271d0F', + source: 'Gravity', + }, + hideFromTestnet: true, + coingeckoId: 'dai', + category: 'stablecoin', + coinSourcePrefix: 'gravity', +} diff --git a/packages/registry/lib/tokens/gUsdt.ts b/packages/registry/lib/tokens/gUsdt.ts new file mode 100644 index 00000000..cd0116d8 --- /dev/null +++ b/packages/registry/lib/tokens/gUsdt.ts @@ -0,0 +1,30 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const gUsdt: Token = { + coinDenom: 'gUSDT', + minCoinDenom: 'uusdt', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/gusdt.png', + type: 'ERC-20', + exponent: '6', + cosmosDenom: + 'ibc/DF63978F803A2E27CA5CC9B7631654CCF0BBC788B3B7F0A10200508E37C70992', + description: 'Tether USD via Gravity Bridge', + name: 'Tether USD', + channel: 'channel-8', + isEnabled: true, + erc20Address: '0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265', + ibc: { + sourceDenom: 'gravity0xdAC17F958D2ee523a2206206994597C13D831ec7', + source: 'Gravity', + }, + hideFromTestnet: true, + coingeckoId: 'tether', + category: 'stablecoin', + coinSourcePrefix: 'gravity', +} diff --git a/packages/registry/lib/tokens/gWbtc.ts b/packages/registry/lib/tokens/gWbtc.ts new file mode 100644 index 00000000..d584abff --- /dev/null +++ b/packages/registry/lib/tokens/gWbtc.ts @@ -0,0 +1,30 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const gWbtc: Token = { + coinDenom: 'gWBTC', + minCoinDenom: 'satoshi', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/gwbtc.png', + type: 'ERC-20', + exponent: '8', + cosmosDenom: + 'ibc/350B6DC0FF48E3BDB856F40A8259909E484259ED452B3F4F39A0FEF874F30F61', + description: 'Wrapped Bitcoin via Gravity Bridge', + name: 'Wrapped Bitcoin', + channel: 'channel-8', + isEnabled: true, + erc20Address: '0x1D54EcB8583Ca25895c512A8308389fFD581F9c9', + ibc: { + sourceDenom: 'gravity0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', + source: 'Gravity', + }, + hideFromTestnet: true, + coingeckoId: 'wrapped-bitcoin', + category: 'bitcoin', + coinSourcePrefix: 'gravity', +} diff --git a/packages/registry/lib/tokens/gWeth.ts b/packages/registry/lib/tokens/gWeth.ts new file mode 100644 index 00000000..952b5158 --- /dev/null +++ b/packages/registry/lib/tokens/gWeth.ts @@ -0,0 +1,30 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const gWeth: Token = { + coinDenom: 'gWETH', + minCoinDenom: 'wei', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/gweth.png', + type: 'ERC-20', + exponent: '18', + cosmosDenom: + 'ibc/6B3FCE336C3465D3B72F7EFB4EB92FC521BC480FE9653F627A0BD0237DF213F3', + description: 'Wrapped Ether via Gravity Bridge', + name: 'Wrapped Ether', + channel: 'channel-8', + isEnabled: true, + erc20Address: '0xc03345448969Dd8C00e9E4A85d2d9722d093aF8E', + ibc: { + sourceDenom: 'gravity0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + source: 'Gravity', + }, + hideFromTestnet: true, + coingeckoId: 'weth', + category: 'ethereum', + coinSourcePrefix: 'gravity', +} diff --git a/packages/registry/lib/tokens/grav.ts b/packages/registry/lib/tokens/grav.ts new file mode 100644 index 00000000..b18b4fcb --- /dev/null +++ b/packages/registry/lib/tokens/grav.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const grav: Token = { + coinDenom: 'GRAV', + minCoinDenom: 'ugraviton', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/grav.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/grav.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/7F0C2CB6E79CC36D29DA7592899F98E3BEFD2CF77A94340C317032A78812393D', + description: 'The native token of Gravity Bridge', + name: 'Graviton', + channel: 'channel-8', + isEnabled: true, + erc20Address: '0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd', + ibc: { sourceDenom: 'ugraviton', source: 'Gravity' }, + hideFromTestnet: true, + coingeckoId: 'graviton', + category: 'cosmos', + coinSourcePrefix: 'gravity', +} diff --git a/packages/registry/lib/tokens/index.ts b/packages/registry/lib/tokens/index.ts new file mode 100644 index 00000000..c1551524 --- /dev/null +++ b/packages/registry/lib/tokens/index.ts @@ -0,0 +1,25 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +export * from './atom.js' +export * from './eeur.js' +export * from './evmos.js' +export * from './grav.js' +export * from './juno.js' +export * from './osmo.js' +export * from './regen.js' +export * from './stars.js' +export * from './tori.js' +export * from './usdcGrv.js' +export * from './usk.js' +export * from './axlDai.js' +export * from './axlUsdc.js' +export * from './axlUsdt.js' +export * from './axlWbtc.js' +export * from './axlWeth.js' +export * from './gDai.js' +export * from './gUsdt.js' +export * from './gWbtc.js' +export * from './gWeth.js' +export * from './stAtom.js' diff --git a/packages/registry/lib/tokens/juno.ts b/packages/registry/lib/tokens/juno.ts new file mode 100644 index 00000000..e478a7f2 --- /dev/null +++ b/packages/registry/lib/tokens/juno.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const juno: Token = { + coinDenom: 'JUNO', + minCoinDenom: 'ujuno', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/juno.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/images/juno.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/448C1061CE97D86CC5E86374CD914870FB8EBA16C58661B5F1D3F46729A2422D', + description: 'The native token of Juno Network', + name: 'Juno', + channel: 'channel-5', + isEnabled: true, + erc20Address: '0x3452e23F9c4cC62c70B7ADAd699B264AF3549C19', + ibc: { sourceDenom: 'ujuno', source: 'Juno' }, + hideFromTestnet: false, + coingeckoId: 'juno-network', + category: 'cosmos', + coinSourcePrefix: 'juno', +} diff --git a/packages/registry/lib/tokens/osmo.ts b/packages/registry/lib/tokens/osmo.ts new file mode 100644 index 00000000..87514bb8 --- /dev/null +++ b/packages/registry/lib/tokens/osmo.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const osmo: Token = { + coinDenom: 'OSMO', + minCoinDenom: 'uosmo', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/ED07A3391A112B175915CD8FAF43A2DA8E4790EDE12566649D0C2F97716B8518', + description: 'The native token of Osmosis', + name: 'Osmosis', + channel: 'channel-0', + isEnabled: true, + erc20Address: '0xFA3C22C069B9556A4B2f7EcE1Ee3B467909f4864', + ibc: { sourceDenom: 'uosmo', source: 'Osmosis' }, + hideFromTestnet: false, + coingeckoId: 'osmosis', + category: 'cosmos', + coinSourcePrefix: 'osmo', +} diff --git a/packages/registry/lib/tokens/regen.ts b/packages/registry/lib/tokens/regen.ts new file mode 100644 index 00000000..9e0ea9c3 --- /dev/null +++ b/packages/registry/lib/tokens/regen.ts @@ -0,0 +1,27 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const regen: Token = { + coinDenom: 'REGEN', + minCoinDenom: 'uregen', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/regen/images/regen.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/36DCDCDFB1D0D723546878E241BC5800D27214E1E1DA31A4E424DE2280B0B0EE', + description: 'REGEN coin is the token for the Regen Network Platform', + name: 'Regen Network', + channel: 'channel-20', + isEnabled: true, + erc20Address: '0x0CE35b0D42608Ca54Eb7bcc8044f7087C18E7717', + ibc: { sourceDenom: 'uregen', source: 'Regen' }, + hideFromTestnet: false, + coingeckoId: 'stargaze', + category: 'cosmos', + coinSourcePrefix: 'regen', +} diff --git a/packages/registry/lib/tokens/stAtom.ts b/packages/registry/lib/tokens/stAtom.ts new file mode 100644 index 00000000..05cfff46 --- /dev/null +++ b/packages/registry/lib/tokens/stAtom.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const stAtom: Token = { + coinDenom: 'stATOM', + minCoinDenom: 'stuatom', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/stride/images/statom.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/stride/images/statom.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/2B62892BD3F90ADE34E16E409303DFC2D6CD7B59CA85CC9D2B424F229CF3D590', + description: 'Staking derivative stATOM for staked ATOM by Stride', + name: 'Stride Staked Atom', + channel: 'channel-27', + isEnabled: true, + erc20Address: '0xc8B4d3e67238e38B20d38908646fF6F4F48De5EC', + ibc: { sourceDenom: 'stuatom', source: 'Stride' }, + hideFromTestnet: false, + coingeckoId: 'stride-staked-atom', + category: 'cosmos', + coinSourcePrefix: 'stride', +} diff --git a/packages/registry/lib/tokens/stars.ts b/packages/registry/lib/tokens/stars.ts new file mode 100644 index 00000000..7db4d17e --- /dev/null +++ b/packages/registry/lib/tokens/stars.ts @@ -0,0 +1,27 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const stars: Token = { + coinDenom: 'STARS', + minCoinDenom: 'ustars', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/stargaze/images/stars.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/7564B7F838579DD4517A225978C623504F852A6D0FF7984AFB28F10D36022BE8', + description: 'The native token of Stargaze', + name: 'Stargaze', + channel: 'channel-13', + isEnabled: true, + erc20Address: '0x5aD523d94Efb56C400941eb6F34393b84c75ba39', + ibc: { sourceDenom: 'ustars', source: 'Stars' }, + hideFromTestnet: false, + coingeckoId: 'stargaze', + category: 'cosmos', + coinSourcePrefix: 'stars', +} diff --git a/packages/registry/lib/tokens/tori.ts b/packages/registry/lib/tokens/tori.ts new file mode 100644 index 00000000..02ff6e1a --- /dev/null +++ b/packages/registry/lib/tokens/tori.ts @@ -0,0 +1,28 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const tori: Token = { + coinDenom: 'TORI', + minCoinDenom: 'utori', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/teritori/images/tori.svg', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/teritori/images/utori.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/18D5C3CDDF1DEE108CE4BF0A7E0262D94D11AB06A37F68EA38F70CC92C5D894F', + description: 'The native staking and governance token of the Teritori chain', + name: 'Teritori', + channel: 'channel-35', + isEnabled: true, + erc20Address: '0x205CF44075E77A3543abC690437F3b2819bc450a', + ibc: { sourceDenom: 'utori', source: 'Teritori' }, + hideFromTestnet: true, + coingeckoId: 'teritori', + category: 'cosmos', + coinSourcePrefix: 'tori', +} diff --git a/packages/registry/lib/tokens/usdcGrv.ts b/packages/registry/lib/tokens/usdcGrv.ts new file mode 100644 index 00000000..a283a592 --- /dev/null +++ b/packages/registry/lib/tokens/usdcGrv.ts @@ -0,0 +1,30 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const usdcGrv: Token = { + coinDenom: 'USDC.grv', + minCoinDenom: 'uusdc', + imgSrc: '', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/gravitybridge/images/gusdc.png', + type: 'ERC-20', + exponent: '6', + cosmosDenom: + 'ibc/693989F95CF3279ADC113A6EF21B02A51EC054C95A9083F2E290126668149433', + description: 'USD Coin via Gravity Bridge', + name: 'USD Coin', + channel: 'channel-8', + isEnabled: true, + erc20Address: '0x5FD55A1B9FC24967C4dB09C513C3BA0DFa7FF687', + ibc: { + sourceDenom: 'gravity0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + source: 'Gravity', + }, + hideFromTestnet: true, + coingeckoId: 'usd-coin', + category: 'stablecoin', + coinSourcePrefix: 'gravity', +} diff --git a/packages/registry/lib/tokens/usk.ts b/packages/registry/lib/tokens/usk.ts new file mode 100644 index 00000000..49c3739d --- /dev/null +++ b/packages/registry/lib/tokens/usk.ts @@ -0,0 +1,29 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +import { Token } from '../types.js' + +export const usk: Token = { + coinDenom: 'USK', + minCoinDenom: 'uusk', + imgSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/kujira/images/kuji.png', + pngSrc: + 'https://raw.githubusercontent.com/cosmos/chain-registry/master/kujira/images/kuji.png', + type: 'IBC', + exponent: '6', + cosmosDenom: + 'ibc/47BEBD156D49678A8D85661D792EB364F875265D7593E165C339F2D4C5C4CBAB', + description: + 'An over-collateralized soft-pegged token to the USD on the Kujira chain', + name: 'USK Stablecoin of Kujira', + channel: 'channel-18', + isEnabled: true, + erc20Address: '0x13974cf36984216C90D1F4FC815C156092feA396', + ibc: { sourceDenom: 'ukuji', source: 'Kujira' }, + hideFromTestnet: false, + coingeckoId: 'usk', + category: 'stablecoin', + coinSourcePrefix: 'kujira', +} diff --git a/packages/registry/lib/types.ts b/packages/registry/lib/types.ts new file mode 100644 index 00000000..39a5fbc5 --- /dev/null +++ b/packages/registry/lib/types.ts @@ -0,0 +1,231 @@ +/* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + +/** + * Chain Registry via Evmos Governance + */ +export interface Chain { + /** + * Chain prefix i.e. evmos + */ + prefix: string + gasPriceStep: { + /** + * Amount of gas for Low + */ + low: string + /** + * Amount of gas for Average + */ + average: string + /** + * Amount of gas for High + */ + high: string + } + /** + * Only applicable to EVMOS + */ + feeMarket?: { + /** + * Enter appropriate gas cost + */ + gas: string + /** + * Enter appropriate amount cost + */ + amount: string + /** + * Enter appropriate convert cost + */ + convert: string + } + bip44: { + /** + * Cosmos-based chains should be 118 while EVM-based chains are coin type 60 + */ + coinType: string + } + configurations?: { + /** + * Chain ID should specific to the environment, i.e. Testnet and Mainnet are different + */ + chainId: string + /** + * Global identifier to be used by both client and backend as default reference for the chain + */ + identifier: string + /** + * Name of the chain specific to the environment, i.e. Evmos Testnet + */ + chainName: string + /** + * Query the 'evmosd query ibc channel client-state [port-id] [channel-id] [flags]' and copy over the client-id field + */ + clientId: string + /** + * RPC endpoint link, usually port 1317 + */ + rpc: string[] + /** + * @minItems 3 + */ + rest: [string, string, string, ...string[]] + /** + * @minItems 3 + */ + jrpc?: [string, string, string, ...string[]] + web3?: string[] + currencies: { + /** + * Unit of the coin or symbol, i.e. EVMOS + */ + coinDenom?: string + /** + * Smallest unit of the coin, i.e. aevmos + */ + coinMinDenom?: string + /** + * Chain minimum coin denomination, i.e. aevmos + */ + coinDecimals?: string + }[] + source: { + /** + * Source channel represents the third-party, i.e. Cosmos Hub side + */ + sourceChannel: string + /** + * The value is ibc/[sha256 of 'transfer/${sourceChannel}/aevmos' phrase]. This value is required to pull in EVMOS from source chain to Evmos chain. + */ + sourceIBCDenomToEvmos: string + /** + * Destination channel represents the main network side, i.e. EVMOS side + */ + destinationChannel: string + /** + * Tendermint endpoint link or using port 26657 + * + * @minItems 1 + */ + jsonRPC: [string, ...string[]] + } + /** + * Explorer is only necessary for EVMOS network. All other Cosmos chains do not require this array object to be filled out + */ + explorer?: { + /** + * Add the correct explorer data type + */ + type: 'evm' | 'cosmos' + /** + * Link to explorer + */ + link: string + }[] + /** + * Must select either mainnet or testnet + */ + configurationType: 'mainnet' | 'testnet' + /** + * Explorer tx URL for the chain, i.e https://www.mintscan.io/evmos/txs. + */ + explorerTxUrl?: string + }[] +} + +/** + * Token Schema Registry via Evmos Governance + */ +export interface Token { + /** + * Coin denom representation, i.e BTC + */ + coinDenom: string + /** + * Minimal coin denom, i.e. satoshi for Bitcoin + */ + minCoinDenom: string + /** + * Link must be SVG link only. If this image is coming from Github, make sure it has a pattern of 'https://raw.githubusercontent.com/cosmos/chain-registry/master/${chain}/images/${coin}.svg' and the link directly opens the image only and not the site of Github with the image. + */ + imgSrc?: string + /** + * Link must be png source. If this image is coming from Github, make sure it has a pattern of 'https://raw.githubusercontent.com/cosmos/chain-registry/master/${chain}/images/${coin}.png' and the link directly opens the image only and not the site of Github with the image. + */ + pngSrc: string + type: 'IBC' | 'ERC-20' | 'CW20' + exponent: string + /** + * Starting with ibc/... + */ + cosmosDenom: string + /** + * Coin description goes here. This description will be used to describe the coin to the user. Please keep it concise. + */ + description: string + /** + * Official name of the coin, i.e. EVMOS + */ + name: string + /** + * Channel must be active. Check https://www.mintscan.io/evmos/relayers and find the right network to see which channel is open on both ends. The value wanted here is the From side of Evmos. + */ + channel: string + /** + * Default to true + */ + isEnabled?: boolean + /** + * Hex address only, i.e. 0x. Can be found on the Evmos API TokenPairs endpoint. This field will be populated when the token passes governance. + */ + erc20Address: string + ibc: { + /** + * There are two states for sourceDenom. Main chain coins like EVMOS will have their minCoinDenom listed here, however, coins from that ecosystem other than the main coin will require its prefix+hexAddress, i.e. gravity0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 for Gravity's USDC.grv + */ + sourceDenom?: string + /** + * Chain name, i.e. Cosmos or Osmosis + */ + source?: string + } + /** + * If network does not have testnet and the coin is not in the testnet via governance or other means, mark this as true, otherwise, leave as is. + */ + hideFromTestnet?: boolean + /** + * Official string coingecko uses to search and load the asset. Please insure the text matches exactly. + */ + coingeckoId: string + /** + * Select a parental category of this asset. If a category does not exist, please feel free to create a PR to update the schema. For example, all wrapped token are part of the parent category, gWBTC is 'bitcoin'. + */ + category: + | 'bitcoin' + | 'ethereum' + | 'stablecoin' + | 'cosmos' + | 'polygon' + | 'none' + /** + * Use this field to declare if the coin is part of a network's ecosystem, like for example, gWBTC is part of Gravity. If the coin is the main network coin, then the response will be itself still. the string here should match the network prefix. + */ + coinSourcePrefix: string + handledByExternalUI?: { + /** + * Link to the external UI site + */ + url: string + /** + * Specify if the external UI is for Deposit, Withdraw, Convert, or others. + */ + handlingAction: + | 'Deposit' + | 'Withdraw' + | 'Convert' + | 'Deposit and Withdraw' + | 'All' + }[] +} diff --git a/packages/registry/package.json b/packages/registry/package.json new file mode 100644 index 00000000..bf9114a9 --- /dev/null +++ b/packages/registry/package.json @@ -0,0 +1,48 @@ +{ + "name": "@evmos/registry", + "version": "0.1.0", + "description": "> TODO: description", + "author": "Julia Ortiz ", + "homepage": "https://github.com/evmos/evmosjs#readme", + "license": "ISC", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "type": "module", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/evmos/evmosjs.git" + }, + "scripts": { + "build": "NODE_OPTIONS='--experimental-import-meta-resolve' ts-node --esm ./src/build.ts" + }, + "bugs": { + "url": "https://github.com/evmos/evmosjs/issues" + }, + "dependencies": { + "ajv": "8", + "chain-token-registry": "https://github.com/julia-script/chain-token-registry.git#patch-1", + "chalk": "4", + "json-schema": "^0.4.0", + "json-schema-to-typescript": "^11.0.2", + "lodash": "^4.17.21", + "prettier": "^2.8.1", + "prettify": "^0.1.7", + "rollup": "^3.8.0", + "ts-node": "^10.9.1", + "typescript": "^4.9.4" + }, + "devDependencies": { + "ajv": "^8.11.2", + "json-schema": "^0.4.0" + } +} diff --git a/packages/registry/src/ChainSchema.d.ts b/packages/registry/src/ChainSchema.d.ts new file mode 100644 index 00000000..aaa78bce --- /dev/null +++ b/packages/registry/src/ChainSchema.d.ts @@ -0,0 +1,139 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Chain Registry via Evmos Governance + */ +export interface ChainSchema { + /** + * Chain prefix i.e. evmos + */ + prefix: string + gasPriceStep: { + /** + * Amount of gas for Low + */ + low: string + /** + * Amount of gas for Average + */ + average: string + /** + * Amount of gas for High + */ + high: string + } + /** + * Only applicable to EVMOS + */ + feeMarket?: { + /** + * Enter appropriate gas cost + */ + gas: string + /** + * Enter appropriate amount cost + */ + amount: string + /** + * Enter appropriate convert cost + */ + convert: string + } + bip44: { + /** + * Cosmos-based chains should be 118 while EVM-based chains are coin type 60 + */ + coinType: string + } + configurations?: { + /** + * Chain ID should specific to the environment, i.e. Testnet and Mainnet are different + */ + chainId: string + /** + * Global identifier to be used by both client and backend as default reference for the chain + */ + identifier: string + /** + * Name of the chain specific to the environment, i.e. Evmos Testnet + */ + chainName: string + /** + * Query the 'evmosd query ibc channel client-state [port-id] [channel-id] [flags]' and copy over the client-id field + */ + clientId: string + /** + * RPC endpoint link, usually port 1317 + */ + rpc: string[] + /** + * @minItems 3 + */ + rest: [string, string, string, ...string[]] + /** + * @minItems 3 + */ + jrpc?: [string, string, string, ...string[]] + web3?: string[] + currencies: { + /** + * Unit of the coin or symbol, i.e. EVMOS + */ + coinDenom?: string + /** + * Smallest unit of the coin, i.e. aevmos + */ + coinMinDenom?: string + /** + * Chain minimum coin denomination, i.e. aevmos + */ + coinDecimals?: string + }[] + source: { + /** + * Source channel represents the third-party, i.e. Cosmos Hub side + */ + sourceChannel: string + /** + * The value is ibc/[sha256 of 'transfer/${sourceChannel}/aevmos' phrase]. This value is required to pull in EVMOS from source chain to Evmos chain. + */ + sourceIBCDenomToEvmos: string + /** + * Destination channel represents the main network side, i.e. EVMOS side + */ + destinationChannel: string + /** + * Tendermint endpoint link or using port 26657 + * + * @minItems 1 + */ + jsonRPC: [string, ...string[]] + } + /** + * Explorer is only necessary for EVMOS network. All other Cosmos chains do not require this array object to be filled out + */ + explorer?: { + /** + * Add the correct explorer data type + */ + type: 'evm' | 'cosmos' + /** + * Link to explorer + */ + link: string + }[] + /** + * Must select either mainnet or testnet + */ + configurationType: 'mainnet' | 'testnet' + /** + * Explorer tx URL for the chain, i.e https://www.mintscan.io/evmos/txs. + */ + explorerTxUrl?: string + }[] +} diff --git a/packages/registry/src/TokenSchema.d.ts b/packages/registry/src/TokenSchema.d.ts new file mode 100644 index 00000000..0112b7bf --- /dev/null +++ b/packages/registry/src/TokenSchema.d.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Token Schema Registry via Evmos Governance + */ +export interface TokenSchema { + /** + * Coin denom representation, i.e BTC + */ + coinDenom: string + /** + * Minimal coin denom, i.e. satoshi for Bitcoin + */ + minCoinDenom: string + /** + * Link must be SVG link only. If this image is coming from Github, make sure it has a pattern of 'https://raw.githubusercontent.com/cosmos/chain-registry/master/${chain}/images/${coin}.svg' and the link directly opens the image only and not the site of Github with the image. + */ + imgSrc?: string + /** + * Link must be png source. If this image is coming from Github, make sure it has a pattern of 'https://raw.githubusercontent.com/cosmos/chain-registry/master/${chain}/images/${coin}.png' and the link directly opens the image only and not the site of Github with the image. + */ + pngSrc: string + type: 'IBC' | 'ERC-20' | 'CW20' + exponent: string + /** + * Starting with ibc/... + */ + cosmosDenom: string + /** + * Coin description goes here. This description will be used to describe the coin to the user. Please keep it concise. + */ + description: string + /** + * Official name of the coin, i.e. EVMOS + */ + name: string + /** + * Channel must be active. Check https://www.mintscan.io/evmos/relayers and find the right network to see which channel is open on both ends. The value wanted here is the From side of Evmos. + */ + channel: string + /** + * Default to true + */ + isEnabled?: boolean + /** + * Hex address only, i.e. 0x. Can be found on the Evmos API TokenPairs endpoint. This field will be populated when the token passes governance. + */ + erc20Address: string + ibc: { + /** + * There are two states for sourceDenom. Main chain coins like EVMOS will have their minCoinDenom listed here, however, coins from that ecosystem other than the main coin will require its prefix+hexAddress, i.e. gravity0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 for Gravity's USDC.grv + */ + sourceDenom?: string + /** + * Chain name, i.e. Cosmos or Osmosis + */ + source?: string + } + /** + * If network does not have testnet and the coin is not in the testnet via governance or other means, mark this as true, otherwise, leave as is. + */ + hideFromTestnet?: boolean + /** + * Official string coingecko uses to search and load the asset. Please insure the text matches exactly. + */ + coingeckoId: string + /** + * Select a parental category of this asset. If a category does not exist, please feel free to create a PR to update the schema. For example, all wrapped token are part of the parent category, gWBTC is 'bitcoin'. + */ + category: + | 'bitcoin' + | 'ethereum' + | 'stablecoin' + | 'cosmos' + | 'polygon' + | 'none' + /** + * Use this field to declare if the coin is part of a network's ecosystem, like for example, gWBTC is part of Gravity. If the coin is the main network coin, then the response will be itself still. the string here should match the network prefix. + */ + coinSourcePrefix: string + handledByExternalUI?: { + /** + * Link to the external UI site + */ + url: string + /** + * Specify if the external UI is for Deposit, Withdraw, Convert, or others. + */ + handlingAction: + | 'Deposit' + | 'Withdraw' + | 'Convert' + | 'Deposit and Withdraw' + | 'All' + }[] +} diff --git a/packages/registry/src/build.ts b/packages/registry/src/build.ts new file mode 100644 index 00000000..bcfec1fc --- /dev/null +++ b/packages/registry/src/build.ts @@ -0,0 +1,88 @@ +/* eslint-disable jest/require-hook */ +import chalk from 'chalk' +import path from 'path' +import { mkdir, rm, writeFile } from 'fs/promises' +import _ from 'lodash' +import typescript from 'typescript' +import { log, readJson, generateSchemaType, formatTs } from './utils.js' +import { + libdir, + libchainConfigDir, + libtokensDir, + registryDir, + chainconfigdir, + tokensdir, + distdir, +} from './paths.js' +import { transformJsonFiles } from './transformJsonFiles.js' + +async function main() { + log(chalk.green('Cleaning up...')) + + await rm(libdir, { recursive: true, force: true }) + await mkdir(libchainConfigDir, { recursive: true }) + await mkdir(libtokensDir, { recursive: true }) + + log(chalk.green('Reading schema types...')) + + const chainSchema = await readJson( + path.join(registryDir, 'schema.chain.json'), + ) + const tokenSchema = await readJson( + path.join(registryDir, 'schema.token.json'), + ) + + log(chalk.green('Generating schema types...')) + const schemaTypes = await Promise.all([ + generateSchemaType(chainSchema, 'Chain'), + generateSchemaType(tokenSchema, 'Token'), + ]) + writeFile(path.join(libdir, 'types.ts'), formatTs(schemaTypes.join('\n'))) + + log(chalk.green('Processing Chain registry...')) + + await transformJsonFiles( + chainSchema, + chainconfigdir, + libchainConfigDir, + (name, content) => + formatTs(` + import { Chain } from '../types' + + export const ${name}:Chain = ${content} + `), + ) + log(chalk.green('Processing Tokens registry...')) + + await transformJsonFiles( + tokenSchema, + tokensdir, + libtokensDir, + (name, content) => + formatTs(` + import { Token } from '../types.js' + + export const ${name}:Token = ${content} + `), + ) + + await writeFile( + path.join(libdir, 'index.ts'), + formatTs(` + export * from './types.js' + export * as chain from './chainConfig/index.js' + export * as token from './tokens/index.js' + `), + ) + + log(chalk.green('Building dist...')) + + const program = typescript.createProgram([path.join(libdir, 'index.ts')], { + outDir: distdir, + declaration: true, + }) + + program.emit() +} + +main() diff --git a/packages/registry/src/paths.ts b/packages/registry/src/paths.ts new file mode 100644 index 00000000..df614526 --- /dev/null +++ b/packages/registry/src/paths.ts @@ -0,0 +1,16 @@ +import { fileURLToPath } from 'url' +import path from 'path' + +const dirname = path.dirname(fileURLToPath(import.meta.url)) +const rootdir = path.dirname(dirname) + +export const distdir = path.join(rootdir, 'dist') +export const libdir = path.join(rootdir, 'lib') +export const libchainConfigDir = path.join(libdir, 'chainConfig') +export const libtokensDir = path.join(libdir, 'tokens') +const chainSchemaDir = + (await import.meta.resolve?.('chain-token-registry/schema.chain.json')) ?? '' +export const registryDir = path.dirname(fileURLToPath(chainSchemaDir)) + +export const chainconfigdir = path.join(registryDir, 'chainConfig') +export const tokensdir = path.join(registryDir, 'tokens') diff --git a/packages/registry/src/transformJsonFiles.ts b/packages/registry/src/transformJsonFiles.ts new file mode 100644 index 00000000..684b0444 --- /dev/null +++ b/packages/registry/src/transformJsonFiles.ts @@ -0,0 +1,66 @@ +import Ajv from 'ajv/dist/2020.js' +import chalk from 'chalk' +import { readdir, writeFile } from 'fs/promises' +import _ from 'lodash' +import path from 'path' + +import { log, readJson, clearLastLine, formatTs, skipLines } from './utils.js' + +const sanitizeName = (name: string) => _.camelCase(name) + +export const transformJsonFiles = async ( + schema: object, + srcDir: string, + destDir: string, + formatter: (name: string, content: string) => string, +) => { + const dirFiles = await readdir(srcDir, { + withFileTypes: true, + }) + const fileNames = dirFiles + .filter(({ name }) => name.endsWith('.json')) + .map(({ name }) => name.replace('.json', '')) + + const ajv = new Ajv() + + for (const fileName of fileNames) { + log(chalk.white(`${fileName}:`), 1) + const content = await readJson(path.join(srcDir, `${fileName}.json`)) + + log(chalk.white(`- Validating...`), 2) + + try { + const valid = await ajv.validate(schema, content) + + if (!valid) { + clearLastLine() + log(chalk.red(`❌ Invalid`), 2) + console.error(ajv.errors) + process.exit(1) + } + } catch (e) { + console.log(e) + } + const safeName = sanitizeName(fileName) + clearLastLine() + log(chalk.white(`✅ Validated`), 2) + + log(chalk.white(`- Processing...`), 2) + await writeFile( + path.join(destDir, `${safeName}.ts`), + formatter(safeName, JSON.stringify(content)), + ) + clearLastLine() + log(chalk.white(`✅ Processed`), 2) + + skipLines() + } + await writeFile( + path.join(destDir, `index.ts`), + formatTs( + fileNames + .map((name) => `export * from './${sanitizeName(name)}.js'`) + .join('\n'), + ), + ) +} diff --git a/packages/registry/src/utils.ts b/packages/registry/src/utils.ts new file mode 100644 index 00000000..692e8091 --- /dev/null +++ b/packages/registry/src/utils.ts @@ -0,0 +1,56 @@ +import { compile } from 'json-schema-to-typescript' +import { JSONSchema4 } from 'json-schema' +import { readFile } from 'fs/promises' +import prettier from 'prettier' +import readline from 'readline' +import _ from 'lodash' + +export const log = (message: string, indent = 0) => + console.log(' '.repeat(indent) + message) + +export const skipLines = (lines = 1) => { + for (let i = 0; i < lines; i += 1) { + log('') + } +} + +export const generateSchemaType = async (schema: JSONSchema4, name: string) => { + const compiled = await compile(_.omit(schema, '$id') as JSONSchema4, name, { + additionalProperties: false, + format: false, + bannerComment: '', + }) + return compiled +} + +export const readJson = async (schemaPath: string) => { + const schemaString = await readFile(schemaPath, { + encoding: 'utf8', + }) + const json = JSON.parse(schemaString) + if (!_.isObject(json)) { + throw new Error(`Invalid JSON: ${schemaPath}`) + } + return json +} + +export const clearLastLine = () => { + readline.moveCursor(process.stdout, 0, -1) // up one line + readline.clearLine(process.stdout, 1) // from cursor to end +} + +export const formatTs = (ts: string) => + prettier.format( + ` + /* + * WARNING: This is an auto-generated file. Do not edit it directly. + */ + + ${ts} + `, + { + parser: 'typescript', + singleQuote: true, + semi: false, + }, + ) diff --git a/packages/registry/tsconfig.json b/packages/registry/tsconfig.json new file mode 100644 index 00000000..bf8630de --- /dev/null +++ b/packages/registry/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.json", + + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "noUnusedLocals": false, + + "outDir": "dist" + }, + "include": ["src/**/*", "test/**/*", "lib/**/*"] +} diff --git a/yarn.lock b/yarn.lock index 22b1541d..90ba9ef0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -946,6 +946,16 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@bcherny/json-schema-ref-parser@9.0.9": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#09899d405bc708c0acac0066ae8db5b94d465ca4" + integrity sha512-vmEmnJCfpkLdas++9OYg6riIezTYqTHpqUTODJzHLzs5UnXujbOJW9VwcVCnyo1mVRt32FRr23iXBx/sX8YbeQ== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1786,6 +1796,11 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + "@lerna/add@5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.6.2.tgz#d0e25fd4900b6f8a9548f940cc016ce8a3e2d2ba" @@ -2924,6 +2939,14 @@ dependencies: "@types/node" "*" +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/google-protobuf@^3.15.5": version "3.15.6" resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.6.tgz#674a69493ef2c849b95eafe69167ea59079eb504" @@ -2963,7 +2986,7 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/json-schema@^7.0.7": +"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -2973,6 +2996,11 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/lodash@^4.14.182": + version "4.14.191" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + "@types/long@^4.0.1": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" @@ -2985,6 +3013,11 @@ dependencies: "@types/unist" "*" +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -3027,6 +3060,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== +"@types/prettier@^2.6.1": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + "@types/secp256k1@^4.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" @@ -3241,6 +3279,16 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv@8: + version "8.11.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -3297,6 +3345,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -3737,6 +3790,11 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -3766,6 +3824,18 @@ caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== +"chain-token-registry@https://github.com/julia-script/chain-token-registry.git#patch-1": + version "0.0.0" + resolved "https://github.com/julia-script/chain-token-registry.git#6a710ee7dc3895adf3fd390becdcdac6d35364f0" + +chalk@4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -3783,14 +3853,6 @@ chalk@^2.0.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -3864,6 +3926,17 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-color@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -4035,7 +4108,7 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -config-chain@^1.1.12: +config-chain@^1.1.12, config-chain@~1.1.5: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== @@ -4270,6 +4343,14 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" @@ -4614,6 +4695,42 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -4947,6 +5064,14 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -4990,6 +5115,13 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -5271,6 +5403,11 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + get-stdin@~9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" @@ -5345,6 +5482,13 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-promise@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -5357,7 +5501,7 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0, glob@~7.2.0: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0, glob@~7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5911,6 +6055,11 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -6470,6 +6619,15 @@ jest@^27.5.1: import-local "^3.0.2" jest-cli "^27.5.1" +js-prettify@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/js-prettify/-/js-prettify-1.4.0.tgz#f66fdf59f397e9e0937cb16a5a237346335e7eb3" + integrity sha512-TO5egXaoaGUZCSp5fMHzwJVjgHk9ouO9HWcoVzK+TdI08YixFY1zjfId+nAFhop2Kx3qO6hl4HPKOACfU/beRA== + dependencies: + config-chain "~1.1.5" + mkdirp "0.3.5" + nopt "~2.1.1" + js-sha3@0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -6548,6 +6706,26 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-to-typescript@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-11.0.2.tgz#80348391abb4ffb75daf312380c2f01c552ffba8" + integrity sha512-XRyeXBJeo/IH4eTP5D1ptX78vCvH86nMDt2k3AxO28C3uYWEDmy4mgPyMpb8bLJ/pJMElOGuQbnKR5Y6NSh3QQ== + dependencies: + "@bcherny/json-schema-ref-parser" "9.0.9" + "@types/json-schema" "^7.0.11" + "@types/lodash" "^4.14.182" + "@types/prettier" "^2.6.1" + cli-color "^2.0.2" + get-stdin "^8.0.0" + glob "^7.1.6" + glob-promise "^4.2.2" + is-glob "^4.0.3" + lodash "^4.17.21" + minimist "^1.2.6" + mkdirp "^1.0.4" + mz "^2.7.0" + prettier "^2.6.2" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -6558,6 +6736,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -6846,6 +7029,11 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lodash@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.3.1.tgz#a4663b53686b895ff074e2ba504dfb76a8e2b770" + integrity sha512-F7AB8u+6d00CCgnbjWzq9fFLpzOMCgq6mPjOW4+8+dYbrnc0obRrC+IHctzfZ1KKTQxX0xo/punrlpOWcf4gpw== + log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -6886,6 +7074,13 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7014,6 +7209,20 @@ mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -7202,6 +7411,11 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" +mkdirp@0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + integrity sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg== + mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -7243,6 +7457,15 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -7258,6 +7481,11 @@ neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" @@ -7320,6 +7548,13 @@ nopt@^6.0.0: dependencies: abbrev "^1.0.0" +nopt@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.1.2.tgz#6cccd977b80132a07731d6e8ce58c2c8303cf9af" + integrity sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA== + dependencies: + abbrev "1" + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7501,6 +7736,11 @@ nx@15.0.13, "nx@>=14.8.1 < 16": yargs "^17.6.2" yargs-parser "21.1.1" +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" @@ -7918,6 +8158,19 @@ prettier@^2.4.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^2.6.2, prettier@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" + integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== + +prettify@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/prettify/-/prettify-0.1.7.tgz#e1d1e4a1a0a42f476d72a0c5b18580801fe29643" + integrity sha512-QqshRIzghly4SYi7U6eaCbwT9wkRQ4vPAziGlNgnYKOn/pgxrP+yigOrvvBknpgX+xD4Mhh8h2h+BpF2ptU+SA== + dependencies: + js-prettify "~1.4.0" + lodash "~1.3.1" + pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -8358,6 +8611,13 @@ rlp@^2.2.3: dependencies: bn.js "^5.2.0" +rollup@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.8.0.tgz#f61dc3ae02467d842687bd55b17a047c93b456ad" + integrity sha512-+UR6PnUslneJNiJfLSzy4XH6R50ZGF0MS7UCv20ftXrktF/TkvZDwiBtXX65esblLR5p8w6LmXgPwt2f2B8SoQ== + optionalDependencies: + fsevents "~2.3.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -8907,6 +9167,20 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -8932,6 +9206,14 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9030,7 +9312,7 @@ ts-node-dev@^1.1.8: ts-node "^9.0.0" tsconfig "^7.0.0" -ts-node@^10.8.1: +ts-node@^10.8.1, ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -9157,6 +9439,16 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -9174,6 +9466,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@^4.9.4: + version "4.9.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" + integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"