graz 0.3.6 → 0.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +15 -9
- package/dist/index.d.mts +668 -169
- package/dist/index.d.ts +668 -169
- package/dist/index.js +1 -98
- package/dist/index.mjs +1 -20
- package/package.json +21 -21
- package/types/global.d.ts +1 -0
- package/dist/.gitkeep +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var d = require('fs/promises');
|
|
5
|
+
var S = require('path');
|
|
6
6
|
var url = require('url');
|
|
7
7
|
var cosmos = require('@keplr-wallet/cosmos');
|
|
8
|
+
var j = require('arg');
|
|
8
9
|
var cosmosDirectoryClient = require('cosmos-directory-client');
|
|
10
|
+
var D = require('p-map');
|
|
11
|
+
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
13
|
|
|
10
14
|
function _interopNamespace(e) {
|
|
11
15
|
if (e && e.__esModule) return e;
|
|
@@ -25,10 +29,12 @@ function _interopNamespace(e) {
|
|
|
25
29
|
return Object.freeze(n);
|
|
26
30
|
}
|
|
27
31
|
|
|
28
|
-
var
|
|
29
|
-
var
|
|
32
|
+
var d__namespace = /*#__PURE__*/_interopNamespace(d);
|
|
33
|
+
var S__namespace = /*#__PURE__*/_interopNamespace(S);
|
|
34
|
+
var j__default = /*#__PURE__*/_interopDefault(j);
|
|
35
|
+
var D__default = /*#__PURE__*/_interopDefault(D);
|
|
30
36
|
|
|
31
|
-
var
|
|
37
|
+
var N=()=>typeof document>"u"?new URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href,E=N();var L=S.dirname(url.fileURLToPath(E)),M=n=>/^\d+$/.test(n),h=n=>M(n[0])?`_${n}`:n,b=`Usage: graz [options]
|
|
32
38
|
|
|
33
39
|
Options:
|
|
34
40
|
|
|
@@ -43,7 +49,7 @@ Generate options:
|
|
|
43
49
|
--authz Generate only authz compatible chains
|
|
44
50
|
|
|
45
51
|
https://github.com/graz-sh/graz
|
|
46
|
-
`,
|
|
47
|
-
`),
|
|
48
|
-
`}).join(""),
|
|
49
|
-
`),
|
|
52
|
+
`,a=j__default.default({"--generate":Boolean,"-g":"--generate","--authz":Boolean,"--best":Boolean,"--mainnet":String,"--testnet":String,"-b":"--best","-M":"--mainnet","-T":"--testnet","--help":Boolean,"-h":"--help","--endpoint":String,"-e":"--endpoint"}),$=async()=>{if(a["--help"]){console.log(b);return}if(a["--generate"]){await x();return}console.log(b);},x=async()=>{console.log("\u23F3 Generating chain list..."),a["--authz"]&&console.log("\u270D\uFE0F Detected authz flag, generating only compatible chains..."),a["--best"]&&console.log("\u{1F481}\u200D\u2642\uFE0F Detected best flag, setting REST and RPC endpoints to best latency..."),(a["--mainnet"]||a["--testnet"])&&console.log("\u{1F419} Detected chain filtering flag, generating only given chain paths...");let n,o;if(a["--endpoint"]){console.log("\u{1F310} Fetching chain information from specified endpoint");try{let s=await fetch(a["--endpoint"]);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);let c=await s.json();n=A(c.mainnet,a["--mainnet"]),o=A(c.testnet,a["--testnet"]);}catch(s){console.error(`\u274C Failed to fetch chain information: ${s.message}`),process.exit(1);}}else [n,o]=await Promise.all([C(cosmosDirectoryClient.createClient(),{filter:a["--mainnet"]}),C(cosmosDirectoryClient.createTestnetClient(),{filter:a["--testnet"]})]);let[r,m]=await Promise.all([d__namespace.readFile(f("index.js.stub"),{encoding:"utf-8"}),d__namespace.readFile(f("index.mjs.stub"),{encoding:"utf-8"})]),l=r.replace("/* REPLACE_MAINNET_DEFS */",u(n)).replace("/* REPLACE_TESTNET_DEFS */",u(o,{testnet:true})).replace("/* REPLACE_MAINNET_CHAINS */",g(n)).replace("/* REPLACE_TESTNET_CHAINS */",g(o,{testnet:true})).replace("/* REPLACE_MAINNET_CHAINS_ARRAY */",p(n)).replace("/* REPLACE_TESTNET_CHAINS_ARRAY */",p(o,{testnet:true})).replace("/* REPLACE_MAINNET_EXPORTS */",p(n)).replace("/* REPLACE_TESTNET_EXPORTS */",p(o,{testnet:true})).replace(/"(.+)":/g,"$1:").trim(),e=m.replace("/* REPLACE_MAINNET_DEFS */",u(n,{mjs:true})).replace("/* REPLACE_TESTNET_DEFS */",u(o,{mjs:true,testnet:true})).replace("/* REPLACE_MAINNET_CHAINS */",g(n)).replace("/* REPLACE_TESTNET_CHAINS */",g(o,{testnet:true})).replace("/* REPLACE_MAINNET_CHAINS_ARRAY */",p(n)).replace("/* REPLACE_TESTNET_CHAINS_ARRAY */",p(o,{testnet:true})).replace(/"(.+)":/g,"$1:").trim();await Promise.all([d__namespace.writeFile(f("index.js"),l,{encoding:"utf-8"}),d__namespace.writeFile(f("index.mjs"),e.replace('"../dist"','"../dist/index.mjs"'),{encoding:"utf-8"}),d__namespace.writeFile(f("index.ts"),e,{encoding:"utf-8"})]),console.log('\u2728 Generate complete! You can import `mainnetChains` and `testnetChains` from "graz/chains".\n');},A=(n,o)=>{if(!o)return n;let r=new Set(o.split(","));return Object.fromEntries(Object.entries(n).filter(([m])=>r.has(m)))},f=(...n)=>S__namespace.resolve(L,"../chains",...n),g=(n,{testnet:o=false}={})=>Object.keys(n).map(r=>` ${h(r)}: ${h(r)},`).join(`
|
|
53
|
+
`),u=(n,{mjs:o=false,testnet:r=false}={})=>Object.entries(n).map(([m,l])=>{let e=`${h(m)}`,s=JSON.stringify(l,null,2);return `${o?"export ":""}const ${e} = defineChainInfo(${s});
|
|
54
|
+
`}).join(""),p=(n,{testnet:o=false}={})=>Object.keys(n).map(r=>` ${h(r)},`).join(`
|
|
55
|
+
`),C=async(n,{filter:o=""}={})=>{let r=o?o.split(",").map(e=>({path:e})):await n.fetchChains().then(e=>e.chains.map(({path:s})=>({path:s}))),m=await D__default.default(r,async e=>n.fetchChain(e.path).then(s=>s.chain),{concurrency:4}),l={};return m.forEach(e=>{try{if(a["--authz"]&&!e.params?.authz)return;let s=a["--best"]?e.best_apis:e.apis;if(!s||!s.rest?.[0]||!s.rpc?.[0])throw new Error(`\u26A0\uFE0F ${e.name} has no REST/RPC endpoints, skipping codegen...`);if(!e.assets)throw new Error(`\u26A0\uFE0F ${e.name} has no assets, skipping codegen...`);let c=e.assets[0],T={coinDenom:c.denom_units[c.denom_units.length-1].denom,coinMinimalDenom:c.denom_units[0].denom,coinDecimals:c.denom_units[c.denom_units.length-1].exponent,coinGeckoId:c.coingecko_id},_=e.fees?.fee_tokens.map(t=>t.low_gas_price&&t.average_gas_price&&t.high_gas_price?{coinDenom:e.assets?.find(i=>i.denom===t.denom)?.denom_units.at(-1)?.denom||t.denom,coinMinimalDenom:e.assets?.find(i=>i.denom===t.denom)?.denom_units[0]?.denom||t.denom,coinDecimals:Number(e.assets?.find(i=>i.denom===t.denom)?.decimals),coinGeckoId:e.assets?.find(i=>i.denom===t.denom)?.coingecko_id||void 0,gasPriceStep:{low:Number(t.low_gas_price),average:Number(t.average_gas_price),high:Number(t.high_gas_price)}}:{coinDenom:e.assets?.find(i=>i.denom===t.denom)?.denom_units.at(-1)?.denom||t.denom,coinMinimalDenom:e.assets?.find(i=>i.denom===t.denom)?.denom_units[0]?.denom||t.denom,coinDecimals:Number(e.assets?.find(i=>i.denom===t.denom)?.decimals),coinGeckoId:e.assets?.find(i=>i.denom===t.denom)?.coingecko_id||void 0});if(!_)throw new Error(`\u26A0\uFE0F ${e.name} has no fee currencies, skipping codegen...`);l[e.path]={chainId:e.chain_id,currencies:e.assets.map(t=>({coinDenom:t.denom_units[t.denom_units.length-1].denom,coinMinimalDenom:t.denom_units[0].denom,coinDecimals:t.denom_units[t.denom_units.length-1].exponent,coinGeckoId:t.coingecko_id})),rest:s.rest[0].address||"",rpc:s.rpc[0].address||"",bech32Config:cosmos.Bech32Address.defaultBech32Config(e.bech32_prefix),chainName:e.chain_name,feeCurrencies:_,stakeCurrency:T,bip44:{coinType:e.slip44??0}};}catch(s){console.error(s instanceof Error?s.message:String(s));}}),l};$();
|