@x402scan/mcp 0.0.7 → 0.0.8-beta.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.
@@ -0,0 +1,112 @@
1
+ import {
2
+ DEFAULT_NETWORK,
3
+ getChainName,
4
+ getDepositLink,
5
+ redeemInviteCode
6
+ } from "./chunk-7BI7Y3ZF.js";
7
+
8
+ // src/cli/lib/deposit.ts
9
+ import chalk from "chalk";
10
+ import { select, text, log, spinner as spinner2 } from "@clack/prompts";
11
+ import open from "open";
12
+
13
+ // src/cli/lib/wait.ts
14
+ import { spinner } from "@clack/prompts";
15
+ var wait = async ({ startText, stopText, ms }) => {
16
+ const { start: startSpinner, stop: stopSpinner } = spinner();
17
+ startSpinner(startText);
18
+ await new Promise((resolve) => setTimeout(resolve, ms));
19
+ stopSpinner(stopText);
20
+ };
21
+
22
+ // src/cli/lib/deposit.ts
23
+ var promptDeposit = async (props) => {
24
+ const { address, flags, surface } = props;
25
+ const depositLink = getDepositLink(address, flags);
26
+ const depositChoice = flags.yes || surface === "guided" ? "manual" : await select({
27
+ message: chalk.bold("How would you like to deposit?"),
28
+ initialValue: "guided",
29
+ options: [
30
+ {
31
+ label: "Guided - Recommended",
32
+ value: "guided",
33
+ hint: "Online portal in x402scan"
34
+ },
35
+ {
36
+ label: "Manual",
37
+ value: "manual",
38
+ hint: "Print deposit instructions"
39
+ },
40
+ {
41
+ label: "Redeem Invite Code",
42
+ value: "invite",
43
+ hint: "Enter an invite code for starter money"
44
+ },
45
+ {
46
+ label: "Skip",
47
+ value: void 0,
48
+ hint: "Skip deposit process - functionality limited"
49
+ }
50
+ ]
51
+ });
52
+ if (depositChoice === "guided") {
53
+ await wait({
54
+ startText: "Opening deposit page...",
55
+ stopText: `Opening ${chalk.underline.hex("#2563eb")(depositLink)}`,
56
+ ms: 1e3
57
+ });
58
+ await open(depositLink);
59
+ } else if (depositChoice === "manual") {
60
+ log.step(chalk.bold("Account Information"));
61
+ log.message(`Address: ${address}`);
62
+ log.message(`Network: ${getChainName(DEFAULT_NETWORK)}`);
63
+ log.step(chalk.bold("Online Portal"));
64
+ log.message(`${chalk.underline(depositLink)}`);
65
+ } else if (depositChoice === "invite") {
66
+ const code = await text({
67
+ message: "Enter your invite code",
68
+ placeholder: "MRT-XXXXX",
69
+ validate: (value) => {
70
+ if (!value || value.trim().length === 0) {
71
+ return "Please enter an invite code";
72
+ }
73
+ }
74
+ });
75
+ if (typeof code !== "string") {
76
+ return promptDeposit({ address, flags, surface });
77
+ }
78
+ const s = spinner2();
79
+ s.start("Redeeming invite code...");
80
+ const redeemResult = await redeemInviteCode({
81
+ code,
82
+ dev: flags.dev,
83
+ address,
84
+ surface: "redeemInvite"
85
+ });
86
+ if (redeemResult.isErr()) {
87
+ s.stop("Invite code redemption failed");
88
+ log.error("Failed to redeem invite code");
89
+ return promptDeposit({ address, flags, surface });
90
+ }
91
+ s.stop("Invite code redeemed successfully!");
92
+ const { amount, txHash } = redeemResult.value;
93
+ await wait({
94
+ startText: "Processing...",
95
+ stopText: chalk.green(
96
+ `${chalk.bold(amount)} USDC has been sent to your wallet!`
97
+ ),
98
+ ms: 1500
99
+ });
100
+ log.success(chalk.bold(`Your wallet has been funded with ${amount} USDC`));
101
+ if (txHash) {
102
+ log.info(chalk.dim(`Transaction: https://basescan.org/tx/${txHash}`));
103
+ }
104
+ return;
105
+ }
106
+ };
107
+
108
+ export {
109
+ wait,
110
+ promptDeposit
111
+ };
112
+ //# sourceMappingURL=chunk-5LYTFZ22.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/lib/deposit.ts","../../src/cli/lib/wait.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { select, text, log, spinner } from '@clack/prompts';\nimport open from 'open';\n\nimport { DEFAULT_NETWORK, getChainName } from '../../shared/networks';\nimport { wait } from './wait';\nimport { getDepositLink } from '../../shared/utils';\nimport { redeemInviteCode } from '../../shared/redeem-invite';\n\nimport type { GlobalFlags } from '@/types';\nimport type { Address } from 'viem';\n\ninterface PromptDepositProps {\n address: Address;\n flags: GlobalFlags;\n surface: string;\n}\n\nexport const promptDeposit = async (\n props: PromptDepositProps\n): Promise<void> => {\n const { address, flags, surface } = props;\n\n const depositLink = getDepositLink(address, flags);\n\n const depositChoice =\n flags.yes || surface === 'guided'\n ? 'manual'\n : await select({\n message: chalk.bold('How would you like to deposit?'),\n initialValue: 'guided' as string | undefined,\n options: [\n {\n label: 'Guided - Recommended',\n value: 'guided',\n hint: 'Online portal in x402scan',\n },\n {\n label: 'Manual',\n value: 'manual',\n hint: 'Print deposit instructions',\n },\n {\n label: 'Redeem Invite Code',\n value: 'invite',\n hint: 'Enter an invite code for starter money',\n },\n {\n label: 'Skip',\n value: undefined,\n hint: 'Skip deposit process - functionality limited',\n },\n ],\n });\n\n if (depositChoice === 'guided') {\n await wait({\n startText: 'Opening deposit page...',\n stopText: `Opening ${chalk.underline.hex('#2563eb')(depositLink)}`,\n ms: 1000,\n });\n\n await open(depositLink);\n } else if (depositChoice === 'manual') {\n log.step(chalk.bold('Account Information'));\n\n log.message(`Address: ${address}`);\n log.message(`Network: ${getChainName(DEFAULT_NETWORK)}`);\n\n log.step(chalk.bold('Online Portal'));\n log.message(`${chalk.underline(depositLink)}`);\n } else if (depositChoice === 'invite') {\n const code = await text({\n message: 'Enter your invite code',\n placeholder: 'MRT-XXXXX',\n validate: value => {\n if (!value || value.trim().length === 0) {\n return 'Please enter an invite code';\n }\n },\n });\n\n if (typeof code !== 'string') {\n return promptDeposit({ address, flags, surface });\n }\n\n const s = spinner();\n s.start('Redeeming invite code...');\n\n const redeemResult = await redeemInviteCode({\n code,\n dev: flags.dev,\n address,\n surface: 'redeemInvite',\n });\n\n if (redeemResult.isErr()) {\n s.stop('Invite code redemption failed');\n log.error('Failed to redeem invite code');\n return promptDeposit({ address, flags, surface });\n }\n\n s.stop('Invite code redeemed successfully!');\n\n const { amount, txHash } = redeemResult.value;\n\n await wait({\n startText: 'Processing...',\n stopText: chalk.green(\n `${chalk.bold(amount)} USDC has been sent to your wallet!`\n ),\n ms: 1500,\n });\n\n log.success(chalk.bold(`Your wallet has been funded with ${amount} USDC`));\n\n if (txHash) {\n log.info(chalk.dim(`Transaction: https://basescan.org/tx/${txHash}`));\n }\n\n return;\n }\n};\n","import { spinner } from '@clack/prompts';\n\ninterface WaitProps {\n startText: string;\n stopText: string;\n ms: number;\n}\n\nexport const wait = async ({ startText, stopText, ms }: WaitProps) => {\n const { start: startSpinner, stop: stopSpinner } = spinner();\n startSpinner(startText);\n await new Promise(resolve => setTimeout(resolve, ms));\n stopSpinner(stopText);\n};\n"],"mappings":"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","names":["spinner","spinner"]}