gmgn-cli 1.1.6 → 1.1.9
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/Readme.md +196 -51
- package/Readme.zh.md +217 -29
- package/dist/client/OpenApiClient.d.ts +1 -1
- package/dist/client/OpenApiClient.d.ts.map +1 -1
- package/dist/client/OpenApiClient.js +18 -4
- package/dist/client/OpenApiClient.js.map +1 -1
- package/dist/commands/market.d.ts.map +1 -1
- package/dist/commands/market.js +167 -5
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +6 -15
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/gmgn-market/SKILL.md +270 -40
- package/skills/gmgn-portfolio/SKILL.md +133 -6
- package/skills/gmgn-swap/SKILL.md +89 -21
- package/skills/gmgn-token/SKILL.md +213 -53
- package/skills/gmgn-track/SKILL.md +121 -14
package/dist/commands/market.js
CHANGED
|
@@ -50,19 +50,181 @@ export function registerMarketCommands(program) {
|
|
|
50
50
|
const data = await client.getTrendingSwaps(opts.chain, opts.interval, extra).catch(exitOnError);
|
|
51
51
|
printResult(data, opts.raw);
|
|
52
52
|
});
|
|
53
|
-
market
|
|
53
|
+
const trenchesCmd = market
|
|
54
54
|
.command("trenches")
|
|
55
55
|
.description("Get Trenches token data (new creation, near completion, completed)")
|
|
56
56
|
.requiredOption("--chain <chain>", "Chain: sol / bsc / base")
|
|
57
57
|
.option("--type <type...>", "Categories to query, repeatable: new_creation / near_completion / completed (default: all three)")
|
|
58
58
|
.option("--launchpad-platform <platform...>", "Launchpad platform filter, repeatable (default: all platforms for the chain)")
|
|
59
59
|
.option("--limit <n>", "Max results per category, max 80 (default: 80)", parseInt)
|
|
60
|
-
.option("--
|
|
61
|
-
.
|
|
60
|
+
.option("--filter-preset <preset>", "Apply a named filter preset: safe / smart-money / strict")
|
|
61
|
+
.option("--sort-by <field>", "Client-side sort per category: smart_degen_count / renowned_count / volume_24h / volume_1h / swaps_24h / swaps_1h / rug_ratio / holder_count / usd_market_cap / created_timestamp")
|
|
62
|
+
.option("--direction <dir>", "Sort direction: asc / desc (default: desc; asc for rug_ratio)")
|
|
63
|
+
.option("--raw", "Output raw JSON");
|
|
64
|
+
// Dynamically register all server-side filter flags
|
|
65
|
+
for (const def of TRENCHES_FILTER_FIELDS) {
|
|
66
|
+
const flag = def.api.replace(/_/g, '-');
|
|
67
|
+
if (def.type === "int") {
|
|
68
|
+
trenchesCmd.option(`--${flag} <${def.type}>`, def.desc, parseInt);
|
|
69
|
+
}
|
|
70
|
+
else if (def.type === "float") {
|
|
71
|
+
trenchesCmd.option(`--${flag} <${def.type}>`, def.desc, parseFloat);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
trenchesCmd.option(`--${flag} <value>`, def.desc);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
trenchesCmd.action(async (opts) => {
|
|
62
78
|
validateChain(opts.chain);
|
|
63
79
|
const client = new OpenApiClient(getConfig());
|
|
64
|
-
|
|
65
|
-
|
|
80
|
+
// Build server-side filter object
|
|
81
|
+
const filters = {};
|
|
82
|
+
// Apply preset values first
|
|
83
|
+
if (opts.filterPreset != null) {
|
|
84
|
+
const preset = TRENCHES_FILTER_PRESETS[opts.filterPreset];
|
|
85
|
+
if (!preset) {
|
|
86
|
+
console.error(`Unknown --filter-preset "${opts.filterPreset}". Valid options: ${Object.keys(TRENCHES_FILTER_PRESETS).join(", ")}`);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
Object.assign(filters, preset);
|
|
90
|
+
}
|
|
91
|
+
// Apply individual filter flags (override preset values)
|
|
92
|
+
const optsMap = opts;
|
|
93
|
+
for (const def of TRENCHES_FILTER_FIELDS) {
|
|
94
|
+
const key = apiFieldToCliKey(def.api);
|
|
95
|
+
const val = optsMap[key];
|
|
96
|
+
if (val != null)
|
|
97
|
+
filters[def.api] = val;
|
|
98
|
+
}
|
|
99
|
+
const data = await client
|
|
100
|
+
.getTrenches(opts.chain, opts.type, opts.launchpadPlatform, opts.limit, Object.keys(filters).length ? filters : undefined)
|
|
101
|
+
.catch(exitOnError);
|
|
102
|
+
const result = opts.sortBy
|
|
103
|
+
? sortTrenchesResult(data, opts.sortBy, opts.direction ?? "")
|
|
104
|
+
: data;
|
|
105
|
+
printResult(result, opts.raw);
|
|
66
106
|
});
|
|
67
107
|
}
|
|
108
|
+
// All server-side filter fields for market trenches
|
|
109
|
+
// API field names map to CLI flags by replacing _ with - (e.g. min_volume_24h → --min-volume-24h)
|
|
110
|
+
const TRENCHES_FILTER_FIELDS = [
|
|
111
|
+
// Trading activity (24h)
|
|
112
|
+
{ api: "min_volume_24h", type: "float", desc: "Min 24h trading volume (USD)" },
|
|
113
|
+
{ api: "max_volume_24h", type: "float", desc: "Max 24h trading volume (USD)" },
|
|
114
|
+
{ api: "min_net_buy_24h", type: "float", desc: "Min 24h net buy volume (USD)" },
|
|
115
|
+
{ api: "max_net_buy_24h", type: "float", desc: "Max 24h net buy volume (USD)" },
|
|
116
|
+
{ api: "min_swaps_24h", type: "int", desc: "Min 24h total swap count" },
|
|
117
|
+
{ api: "max_swaps_24h", type: "int", desc: "Max 24h total swap count" },
|
|
118
|
+
{ api: "min_buys_24h", type: "int", desc: "Min 24h buy count" },
|
|
119
|
+
{ api: "max_buys_24h", type: "int", desc: "Max 24h buy count" },
|
|
120
|
+
{ api: "min_sells_24h", type: "int", desc: "Min 24h sell count" },
|
|
121
|
+
{ api: "max_sells_24h", type: "int", desc: "Max 24h sell count" },
|
|
122
|
+
{ api: "min_visiting_count", type: "int", desc: "Min visitor count" },
|
|
123
|
+
{ api: "max_visiting_count", type: "int", desc: "Max visitor count" },
|
|
124
|
+
// Market & liquidity
|
|
125
|
+
{ api: "min_progress", type: "float", desc: "Min bonding curve progress (0–1)" },
|
|
126
|
+
{ api: "max_progress", type: "float", desc: "Max bonding curve progress (0–1, 1 = completed)" },
|
|
127
|
+
{ api: "min_marketcap", type: "float", desc: "Min market cap (USD)" },
|
|
128
|
+
{ api: "max_marketcap", type: "float", desc: "Max market cap (USD)" },
|
|
129
|
+
{ api: "min_liquidity", type: "float", desc: "Min liquidity (USD)" },
|
|
130
|
+
{ api: "max_liquidity", type: "float", desc: "Max liquidity (USD)" },
|
|
131
|
+
// Token age
|
|
132
|
+
{ api: "min_created", type: "string", desc: "Min token age (e.g. 1m / 5m / 30m / 1h / 6h / 24h)" },
|
|
133
|
+
{ api: "max_created", type: "string", desc: "Max token age (e.g. 1m / 5m / 30m / 1h / 6h / 24h)" },
|
|
134
|
+
// Holders
|
|
135
|
+
{ api: "min_holder_count", type: "int", desc: "Min holder count" },
|
|
136
|
+
{ api: "max_holder_count", type: "int", desc: "Max holder count" },
|
|
137
|
+
{ api: "min_top_holder_rate", type: "float", desc: "Min top-10 holder concentration (0–1)" },
|
|
138
|
+
{ api: "max_top_holder_rate", type: "float", desc: "Max top-10 holder concentration (0–1)" },
|
|
139
|
+
// Risk signals
|
|
140
|
+
{ api: "min_rug_ratio", type: "float", desc: "Min rug pull risk score (0–1)" },
|
|
141
|
+
{ api: "max_rug_ratio", type: "float", desc: "Max rug pull risk score (0–1, e.g. 0.3 to exclude rugs)" },
|
|
142
|
+
{ api: "min_bundler_rate", type: "float", desc: "Min bundle-bot trading ratio (0–1)" },
|
|
143
|
+
{ api: "max_bundler_rate", type: "float", desc: "Max bundle-bot trading ratio (0–1)" },
|
|
144
|
+
{ api: "min_insider_ratio", type: "float", desc: "Min insider trading ratio (0–1)" },
|
|
145
|
+
{ api: "max_insider_ratio", type: "float", desc: "Max insider trading ratio (0–1)" },
|
|
146
|
+
{ api: "min_entrapment_ratio", type: "float", desc: "Min entrapment trading ratio (0–1)" },
|
|
147
|
+
{ api: "max_entrapment_ratio", type: "float", desc: "Max entrapment trading ratio (0–1)" },
|
|
148
|
+
{ api: "min_private_vault_hold_rate", type: "float", desc: "Min private vault holding ratio (0–1)" },
|
|
149
|
+
{ api: "max_private_vault_hold_rate", type: "float", desc: "Max private vault holding ratio (0–1)" },
|
|
150
|
+
{ api: "min_top70_sniper_hold_rate", type: "float", desc: "Min top-70 sniper holding ratio (0–1)" },
|
|
151
|
+
{ api: "max_top70_sniper_hold_rate", type: "float", desc: "Max top-70 sniper holding ratio (0–1)" },
|
|
152
|
+
{ api: "min_bot_count", type: "int", desc: "Min bot wallet count" },
|
|
153
|
+
{ api: "max_bot_count", type: "int", desc: "Max bot wallet count" },
|
|
154
|
+
{ api: "min_bot_degen_rate", type: "float", desc: "Min bot-degen wallet ratio (0–1)" },
|
|
155
|
+
{ api: "max_bot_degen_rate", type: "float", desc: "Max bot-degen wallet ratio (0–1)" },
|
|
156
|
+
{ api: "min_fresh_wallet_rate", type: "float", desc: "Min fresh wallet ratio (0–1)" },
|
|
157
|
+
{ api: "max_fresh_wallet_rate", type: "float", desc: "Max fresh wallet ratio (0–1)" },
|
|
158
|
+
{ api: "min_total_fee", type: "float", desc: "Min total fee" },
|
|
159
|
+
{ api: "max_total_fee", type: "float", desc: "Max total fee" },
|
|
160
|
+
// Smart money
|
|
161
|
+
{ api: "min_smart_degen_count", type: "int", desc: "Min smart-money holder count" },
|
|
162
|
+
{ api: "max_smart_degen_count", type: "int", desc: "Max smart-money holder count" },
|
|
163
|
+
{ api: "min_renowned_count", type: "int", desc: "Min KOL / renowned wallet count" },
|
|
164
|
+
{ api: "max_renowned_count", type: "int", desc: "Max KOL / renowned wallet count" },
|
|
165
|
+
// Dev / creator
|
|
166
|
+
{ api: "min_creator_balance_rate", type: "float", desc: "Min creator holding ratio (0–1)" },
|
|
167
|
+
{ api: "max_creator_balance_rate", type: "float", desc: "Max creator holding ratio (0–1)" },
|
|
168
|
+
{ api: "min_creator_created_count", type: "int", desc: "Min creator total token creation count" },
|
|
169
|
+
{ api: "max_creator_created_count", type: "int", desc: "Max creator total token creation count" },
|
|
170
|
+
{ api: "min_creator_created_open_count", type: "int", desc: "Min creator graduated token count" },
|
|
171
|
+
{ api: "max_creator_created_open_count", type: "int", desc: "Max creator graduated token count" },
|
|
172
|
+
{ api: "min_creator_created_open_ratio", type: "float", desc: "Min creator graduation ratio (0–1)" },
|
|
173
|
+
{ api: "max_creator_created_open_ratio", type: "float", desc: "Max creator graduation ratio (0–1)" },
|
|
174
|
+
// Social
|
|
175
|
+
{ api: "min_x_follower", type: "int", desc: "Min Twitter / X follower count" },
|
|
176
|
+
{ api: "max_x_follower", type: "int", desc: "Max Twitter / X follower count" },
|
|
177
|
+
{ api: "min_twitter_rename_count", type: "int", desc: "Min Twitter rename count (high = suspicious)" },
|
|
178
|
+
{ api: "max_twitter_rename_count", type: "int", desc: "Max Twitter rename count" },
|
|
179
|
+
{ api: "min_tg_call_count", type: "int", desc: "Min Telegram call count" },
|
|
180
|
+
{ api: "max_tg_call_count", type: "int", desc: "Max Telegram call count" },
|
|
181
|
+
];
|
|
182
|
+
// Named filter presets using actual server-side API field names
|
|
183
|
+
const TRENCHES_FILTER_PRESETS = {
|
|
184
|
+
safe: {
|
|
185
|
+
max_rug_ratio: 0.3,
|
|
186
|
+
max_bundler_rate: 0.3,
|
|
187
|
+
max_insider_ratio: 0.3,
|
|
188
|
+
},
|
|
189
|
+
"smart-money": {
|
|
190
|
+
min_smart_degen_count: 1,
|
|
191
|
+
},
|
|
192
|
+
strict: {
|
|
193
|
+
max_rug_ratio: 0.3,
|
|
194
|
+
max_bundler_rate: 0.3,
|
|
195
|
+
max_insider_ratio: 0.3,
|
|
196
|
+
min_smart_degen_count: 1,
|
|
197
|
+
min_volume_24h: 1000,
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
// Convert API snake_case field to Commander.js opts key
|
|
201
|
+
// Commander.js camelCase: only converts -[a-z] patterns, digits stay as-is
|
|
202
|
+
// e.g. min_volume_24h → min-volume-24h → minVolume-24h (digit prefix -24 is NOT converted)
|
|
203
|
+
// e.g. min_smart_degen_count → min-smart-degen-count → minSmartDegenCount (all letters, converts fully)
|
|
204
|
+
function apiFieldToCliKey(apiField) {
|
|
205
|
+
return apiField
|
|
206
|
+
.replace(/_/g, '-')
|
|
207
|
+
.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
208
|
+
}
|
|
209
|
+
const TRENCHES_SORT_ASC_DEFAULTS = new Set(["rug_ratio"]);
|
|
210
|
+
const TRENCHES_STRING_NUMERIC_FIELDS = new Set(["usd_market_cap", "liquidity", "volume_1h", "volume_24h"]);
|
|
211
|
+
function sortTrenchesCategory(items, sortBy, direction) {
|
|
212
|
+
const dir = direction || (TRENCHES_SORT_ASC_DEFAULTS.has(sortBy) ? "asc" : "desc");
|
|
213
|
+
return [...items].sort((a, b) => {
|
|
214
|
+
const aVal = TRENCHES_STRING_NUMERIC_FIELDS.has(sortBy)
|
|
215
|
+
? parseFloat(String(a[sortBy] ?? 0))
|
|
216
|
+
: Number(a[sortBy] ?? 0);
|
|
217
|
+
const bVal = TRENCHES_STRING_NUMERIC_FIELDS.has(sortBy)
|
|
218
|
+
? parseFloat(String(b[sortBy] ?? 0))
|
|
219
|
+
: Number(b[sortBy] ?? 0);
|
|
220
|
+
return dir === "asc" ? aVal - bVal : bVal - aVal;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
function sortTrenchesResult(data, sortBy, direction) {
|
|
224
|
+
const result = {};
|
|
225
|
+
for (const [key, val] of Object.entries(data)) {
|
|
226
|
+
result[key] = Array.isArray(val) ? sortTrenchesCategory(val, sortBy, direction) : val;
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
68
230
|
//# sourceMappingURL=market.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../src/commands/market.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../src/commands/market.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyGhE"}
|
|
@@ -14,11 +14,9 @@ export function registerPortfolioCommands(program) {
|
|
|
14
14
|
.option("--order-by <field>", "Sort field: usd_value / last_active_timestamp / realized_profit / unrealized_profit / total_profit / history_bought_cost / history_sold_income", "usd_value")
|
|
15
15
|
.option("--direction <dir>", "Sort direction: asc / desc", "desc")
|
|
16
16
|
.option("--interval <interval>", "Stats interval (default 24h)")
|
|
17
|
-
.option("--
|
|
18
|
-
.option("--
|
|
19
|
-
.option("--hide-
|
|
20
|
-
.option("--hide-airdrop", "Hide airdrop positions")
|
|
21
|
-
.option("--hide-closed", "Hide closed positions")
|
|
17
|
+
.option("--hide-abnormal <bool>", "Hide abnormal positions (default: false)", "false")
|
|
18
|
+
.option("--hide-airdrop <bool>", "Hide airdrop positions (default: true)", "true")
|
|
19
|
+
.option("--hide-closed <bool>", "Hide closed positions (default: true)", "true")
|
|
22
20
|
.option("--hide-open", "Hide open positions")
|
|
23
21
|
.option("--tx30d", "Only show positions with trades in last 30 days")
|
|
24
22
|
.option("--raw", "Output raw JSON")
|
|
@@ -36,16 +34,9 @@ export function registerPortfolioCommands(program) {
|
|
|
36
34
|
extra["direction"] = opts.direction;
|
|
37
35
|
if (opts.interval)
|
|
38
36
|
extra["interval"] = opts.interval;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
extra["show_small"] = "true";
|
|
43
|
-
if (opts.hideAbnormal)
|
|
44
|
-
extra["hide_abnormal"] = "true";
|
|
45
|
-
if (opts.hideAirdrop)
|
|
46
|
-
extra["hide_airdrop"] = "true";
|
|
47
|
-
if (opts.hideClosed)
|
|
48
|
-
extra["hide_closed"] = "true";
|
|
37
|
+
extra["hide_abnormal"] = opts.hideAbnormal;
|
|
38
|
+
extra["hide_airdrop"] = opts.hideAirdrop;
|
|
39
|
+
extra["hide_closed"] = opts.hideClosed;
|
|
49
40
|
if (opts.hideOpen)
|
|
50
41
|
extra["hide_open"] = "true";
|
|
51
42
|
if (opts.tx30d)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAExF,SAAS;SACN,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,2BAA2B,CAAC;SACxC,cAAc,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SAC5D,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,CAAC;SACrE,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;SAChD,MAAM,CAAC,oBAAoB,EAAE,gJAAgJ,EAAE,WAAW,CAAC;SAC3L,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,CAAC;SACjE,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;SAC/D,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from "module";
|
|
3
3
|
const { version } = createRequire(import.meta.url)("../package.json");
|
|
4
|
-
import { setGlobalDispatcher, ProxyAgent, Agent } from "undici";
|
|
4
|
+
import { setGlobalDispatcher, ProxyAgent, Agent, buildConnector } from "undici";
|
|
5
5
|
import { SocksClient } from "socks";
|
|
6
6
|
import * as tls from "tls";
|
|
7
7
|
import { Command } from "commander";
|
|
@@ -24,6 +24,7 @@ if (proxy) {
|
|
|
24
24
|
proxy: { host: u.hostname, port: parseInt(u.port || "1080"), type },
|
|
25
25
|
command: "connect",
|
|
26
26
|
destination: { host: options.hostname, port: +options.port },
|
|
27
|
+
socket_options: { family: 4 },
|
|
27
28
|
});
|
|
28
29
|
if (options.protocol === "https:") {
|
|
29
30
|
callback(null, tls.connect({ socket, servername: options.hostname, rejectUnauthorized: options.rejectUnauthorized !== false }));
|
|
@@ -42,11 +43,16 @@ if (proxy) {
|
|
|
42
43
|
setGlobalDispatcher(new ProxyAgent(proxy));
|
|
43
44
|
}
|
|
44
45
|
}
|
|
46
|
+
else {
|
|
47
|
+
// Force IPv4 for all connections (no proxy mode)
|
|
48
|
+
const connector = buildConnector({ family: 4 });
|
|
49
|
+
setGlobalDispatcher(new Agent({ connect: connector }));
|
|
50
|
+
}
|
|
45
51
|
const program = new Command();
|
|
46
52
|
program
|
|
47
53
|
.name("gmgn-cli")
|
|
48
54
|
.version(version)
|
|
49
|
-
.description("GMGN OpenAPI CLI — market data, token info, portfolio and swap");
|
|
55
|
+
.description("GMGN OpenAPI CLI — market data, token info, portfolio, track KOL/smart money trades, and swap");
|
|
50
56
|
registerTokenCommands(program);
|
|
51
57
|
registerMarketCommands(program);
|
|
52
58
|
registerPortfolioCommands(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|