@voyage_ai/v402-web-ts 0.1.1 → 0.1.3

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/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PaymentRequirements } from 'x402/types';
2
- export { ExactEvmPayload, ExactSvmPayload, PaymentRequirements, SPLTokenAmount, SettleResponse, VerifyResponse, x402Response } from 'x402/types';
2
+ export { PaymentRequirements, SPLTokenAmount, SettleResponse, VerifyResponse, x402Response } from 'x402/types';
3
3
  import { VersionedTransaction } from '@solana/web3.js';
4
4
  import { z } from 'zod';
5
5
 
@@ -442,6 +442,7 @@ declare function getWalletDisplayName(networkType: NetworkType): string;
442
442
  * @param endpoint - API endpoint
443
443
  * @param networkType - Network type (from useWallet)
444
444
  * @param merchantId - @see our website to apply
445
+ * @param additionalParams - Optional additional parameters to send with the request (default: {})
445
446
  * @returns Response from the payment
446
447
  *
447
448
  * @example
@@ -449,8 +450,19 @@ declare function getWalletDisplayName(networkType: NetworkType): string;
449
450
  * const response = await makePayment('/api/endpoint', networkType);
450
451
  * const data = await response.json();
451
452
  * ```
453
+ *
454
+ * @example
455
+ * ```tsx
456
+ * // With additional parameters
457
+ * const response = await makePayment(
458
+ * '/api/endpoint',
459
+ * networkType,
460
+ * merchantId,
461
+ * { userId: '123', customField: 'value' }
462
+ * );
463
+ * ```
452
464
  */
453
- declare function makePayment(networkType: NetworkType, merchantId: string, endpoint?: string): Promise<Response>;
465
+ declare function makePayment(networkType: NetworkType, merchantId: string, endpoint?: string, additionalParams?: Record<string, any>): Promise<Response>;
454
466
 
455
467
  /**
456
468
  * Network utilities
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PaymentRequirements } from 'x402/types';
2
- export { ExactEvmPayload, ExactSvmPayload, PaymentRequirements, SPLTokenAmount, SettleResponse, VerifyResponse, x402Response } from 'x402/types';
2
+ export { PaymentRequirements, SPLTokenAmount, SettleResponse, VerifyResponse, x402Response } from 'x402/types';
3
3
  import { VersionedTransaction } from '@solana/web3.js';
4
4
  import { z } from 'zod';
5
5
 
@@ -442,6 +442,7 @@ declare function getWalletDisplayName(networkType: NetworkType): string;
442
442
  * @param endpoint - API endpoint
443
443
  * @param networkType - Network type (from useWallet)
444
444
  * @param merchantId - @see our website to apply
445
+ * @param additionalParams - Optional additional parameters to send with the request (default: {})
445
446
  * @returns Response from the payment
446
447
  *
447
448
  * @example
@@ -449,8 +450,19 @@ declare function getWalletDisplayName(networkType: NetworkType): string;
449
450
  * const response = await makePayment('/api/endpoint', networkType);
450
451
  * const data = await response.json();
451
452
  * ```
453
+ *
454
+ * @example
455
+ * ```tsx
456
+ * // With additional parameters
457
+ * const response = await makePayment(
458
+ * '/api/endpoint',
459
+ * networkType,
460
+ * merchantId,
461
+ * { userId: '123', customField: 'value' }
462
+ * );
463
+ * ```
452
464
  */
453
- declare function makePayment(networkType: NetworkType, merchantId: string, endpoint?: string): Promise<Response>;
465
+ declare function makePayment(networkType: NetworkType, merchantId: string, endpoint?: string, additionalParams?: Record<string, any>): Promise<Response>;
454
466
 
455
467
  /**
456
468
  * Network utilities
package/dist/index.js CHANGED
@@ -3,6 +3,9 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __esm = (fn, res) => function __init() {
7
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
+ };
6
9
  var __export = (target, all) => {
7
10
  for (var name in all)
8
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -17,107 +20,38 @@ var __copyProps = (to, from, except, desc) => {
17
20
  };
18
21
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
22
 
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- EVM_NETWORK_CONFIGS: () => EVM_NETWORK_CONFIGS,
24
- EvmNetworkSchema: () => EvmNetworkSchema,
25
- EvmPaymentPayloadSchema: () => EvmPaymentPayloadSchema,
26
- SolanaNetworkSchema: () => SolanaNetworkSchema,
27
- SolanaPaymentPayloadSchema: () => SolanaPaymentPayloadSchema,
28
- createEvmPaymentFetch: () => createEvmPaymentFetch,
29
- createEvmPaymentHeader: () => createEvmPaymentHeader,
30
- createSvmPaymentFetch: () => createSvmPaymentFetch,
31
- createSvmPaymentHeader: () => createSvmPaymentHeader,
32
- formatAddress: () => formatAddress,
33
- fromAtomicUnits: () => fromAtomicUnits,
34
- getChainId: () => getChainId,
35
- getChainIdFromNetwork: () => getChainIdFromNetwork,
36
- getDefaultSolanaRpcUrl: () => getDefaultSolanaRpcUrl,
37
- getNetworkDisplayName: () => getNetworkDisplayName,
38
- getNetworkType: () => getNetworkType,
39
- getWalletDisplayName: () => getWalletDisplayName,
40
- getWalletInstallUrl: () => getWalletInstallUrl,
41
- getWalletProvider: () => getWalletProvider,
42
- handleEvmPayment: () => handleEvmPayment,
43
- handleSvmPayment: () => handleSvmPayment,
44
- is402Response: () => is402Response,
45
- isEvmAddress: () => isEvmAddress,
46
- isEvmNetwork: () => isEvmNetwork,
47
- isSolanaAddress: () => isSolanaAddress,
48
- isSolanaNetwork: () => isSolanaNetwork,
49
- isWalletInstalled: () => isWalletInstalled,
50
- makePayment: () => makePayment,
51
- toAtomicUnits: () => toAtomicUnits
52
- });
53
- module.exports = __toCommonJS(index_exports);
54
-
55
- // src/types/index.ts
56
- var import_types3 = require("x402/types");
57
-
58
23
  // src/types/common.ts
59
- var PROD_BACK_URL = "https://v402.onvoyage.ai/api/pay";
24
+ var PROD_BACK_URL;
25
+ var init_common = __esm({
26
+ "src/types/common.ts"() {
27
+ "use strict";
28
+ PROD_BACK_URL = "https://v402.onvoyage.ai/api/pay";
29
+ }
30
+ });
60
31
 
61
32
  // src/types/svm.ts
62
- var import_zod = require("zod");
63
- var import_types = require("x402/types");
64
- var SolanaNetworkSchema = import_zod.z.enum([
65
- "solana-devnet",
66
- "solana",
67
- "solana-mainnet"
68
- // Alias for mainnet
69
- ]);
70
- var SolanaPaymentPayloadSchema = import_zod.z.object({
71
- x402Version: import_zod.z.literal(1),
72
- scheme: import_zod.z.literal("exact"),
73
- network: SolanaNetworkSchema,
74
- payload: import_types.ExactSvmPayloadSchema
33
+ var import_zod, import_types, SolanaNetworkSchema, SolanaPaymentPayloadSchema;
34
+ var init_svm = __esm({
35
+ "src/types/svm.ts"() {
36
+ "use strict";
37
+ import_zod = require("zod");
38
+ import_types = require("x402/types");
39
+ SolanaNetworkSchema = import_zod.z.enum([
40
+ "solana-devnet",
41
+ "solana",
42
+ "solana-mainnet"
43
+ // Alias for mainnet
44
+ ]);
45
+ SolanaPaymentPayloadSchema = import_zod.z.object({
46
+ x402Version: import_zod.z.literal(1),
47
+ scheme: import_zod.z.literal("exact"),
48
+ network: SolanaNetworkSchema,
49
+ payload: import_types.ExactSvmPayloadSchema
50
+ });
51
+ }
75
52
  });
76
53
 
77
54
  // src/types/evm.ts
78
- var import_zod2 = require("zod");
79
- var import_types2 = require("x402/types");
80
- var EvmNetworkSchema = import_zod2.z.enum([
81
- "ethereum",
82
- "sepolia",
83
- "base",
84
- "base-sepolia",
85
- "polygon",
86
- "arbitrum",
87
- "optimism"
88
- ]);
89
- var EvmPaymentPayloadSchema = import_zod2.z.object({
90
- x402Version: import_zod2.z.literal(1),
91
- scheme: import_zod2.z.literal("exact"),
92
- network: EvmNetworkSchema,
93
- payload: import_types2.ExactEvmPayloadSchema
94
- });
95
- var EVM_NETWORK_CONFIGS = {
96
- "ethereum": {
97
- chainId: "0x1",
98
- chainName: "Ethereum Mainnet",
99
- rpcUrls: ["https://eth.llamarpc.com"],
100
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
101
- },
102
- "sepolia": {
103
- chainId: "0xaa36a7",
104
- chainName: "Sepolia",
105
- rpcUrls: ["https://sepolia.infura.io/v3/"],
106
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
107
- },
108
- "base": {
109
- chainId: "0x2105",
110
- chainName: "Base",
111
- rpcUrls: ["https://mainnet.base.org"],
112
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
113
- },
114
- "base-sepolia": {
115
- chainId: "0x14a34",
116
- chainName: "Base Sepolia",
117
- rpcUrls: ["https://sepolia.base.org"],
118
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
119
- }
120
- };
121
55
  function getChainId(network) {
122
56
  const chainIdMap = {
123
57
  "ethereum": 1,
@@ -130,10 +64,66 @@ function getChainId(network) {
130
64
  };
131
65
  return chainIdMap[network.toLowerCase()] || 1;
132
66
  }
67
+ var import_zod2, import_types2, EvmNetworkSchema, EvmPaymentPayloadSchema, EVM_NETWORK_CONFIGS;
68
+ var init_evm = __esm({
69
+ "src/types/evm.ts"() {
70
+ "use strict";
71
+ import_zod2 = require("zod");
72
+ import_types2 = require("x402/types");
73
+ EvmNetworkSchema = import_zod2.z.enum([
74
+ "ethereum",
75
+ "sepolia",
76
+ "base",
77
+ "base-sepolia",
78
+ "polygon",
79
+ "arbitrum",
80
+ "optimism"
81
+ ]);
82
+ EvmPaymentPayloadSchema = import_zod2.z.object({
83
+ x402Version: import_zod2.z.literal(1),
84
+ scheme: import_zod2.z.literal("exact"),
85
+ network: EvmNetworkSchema,
86
+ payload: import_types2.ExactEvmPayloadSchema
87
+ });
88
+ EVM_NETWORK_CONFIGS = {
89
+ "ethereum": {
90
+ chainId: "0x1",
91
+ chainName: "Ethereum Mainnet",
92
+ rpcUrls: ["https://eth.llamarpc.com"],
93
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
94
+ },
95
+ "sepolia": {
96
+ chainId: "0xaa36a7",
97
+ chainName: "Sepolia",
98
+ rpcUrls: ["https://sepolia.infura.io/v3/"],
99
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
100
+ },
101
+ "base": {
102
+ chainId: "0x2105",
103
+ chainName: "Base",
104
+ rpcUrls: ["https://mainnet.base.org"],
105
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
106
+ },
107
+ "base-sepolia": {
108
+ chainId: "0x14a34",
109
+ chainName: "Base Sepolia",
110
+ rpcUrls: ["https://sepolia.base.org"],
111
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }
112
+ }
113
+ };
114
+ }
115
+ });
133
116
 
134
- // src/services/svm/payment-header.ts
135
- var import_web3 = require("@solana/web3.js");
136
- var import_spl_token = require("@solana/spl-token");
117
+ // src/types/index.ts
118
+ var import_types3;
119
+ var init_types = __esm({
120
+ "src/types/index.ts"() {
121
+ "use strict";
122
+ import_types3 = require("x402/types");
123
+ init_svm();
124
+ init_evm();
125
+ }
126
+ });
137
127
 
138
128
  // src/utils/wallet.ts
139
129
  function isWalletInstalled(networkType) {
@@ -192,6 +182,54 @@ function getWalletDisplayName(networkType) {
192
182
  return "Unknown Wallet";
193
183
  }
194
184
  }
185
+ var init_wallet = __esm({
186
+ "src/utils/wallet.ts"() {
187
+ "use strict";
188
+ }
189
+ });
190
+
191
+ // src/index.ts
192
+ var index_exports = {};
193
+ __export(index_exports, {
194
+ EVM_NETWORK_CONFIGS: () => EVM_NETWORK_CONFIGS,
195
+ EvmNetworkSchema: () => EvmNetworkSchema,
196
+ EvmPaymentPayloadSchema: () => EvmPaymentPayloadSchema,
197
+ SolanaNetworkSchema: () => SolanaNetworkSchema,
198
+ SolanaPaymentPayloadSchema: () => SolanaPaymentPayloadSchema,
199
+ createEvmPaymentFetch: () => createEvmPaymentFetch,
200
+ createEvmPaymentHeader: () => createEvmPaymentHeader,
201
+ createSvmPaymentFetch: () => createSvmPaymentFetch,
202
+ createSvmPaymentHeader: () => createSvmPaymentHeader,
203
+ formatAddress: () => formatAddress,
204
+ fromAtomicUnits: () => fromAtomicUnits,
205
+ getChainId: () => getChainId,
206
+ getChainIdFromNetwork: () => getChainIdFromNetwork,
207
+ getDefaultSolanaRpcUrl: () => getDefaultSolanaRpcUrl,
208
+ getNetworkDisplayName: () => getNetworkDisplayName,
209
+ getNetworkType: () => getNetworkType,
210
+ getWalletDisplayName: () => getWalletDisplayName,
211
+ getWalletInstallUrl: () => getWalletInstallUrl,
212
+ getWalletProvider: () => getWalletProvider,
213
+ handleEvmPayment: () => handleEvmPayment,
214
+ handleSvmPayment: () => handleSvmPayment,
215
+ is402Response: () => is402Response,
216
+ isEvmAddress: () => isEvmAddress,
217
+ isEvmNetwork: () => isEvmNetwork,
218
+ isSolanaAddress: () => isSolanaAddress,
219
+ isSolanaNetwork: () => isSolanaNetwork,
220
+ isWalletInstalled: () => isWalletInstalled,
221
+ makePayment: () => makePayment,
222
+ toAtomicUnits: () => toAtomicUnits
223
+ });
224
+ module.exports = __toCommonJS(index_exports);
225
+ init_types();
226
+
227
+ // src/services/svm/payment-header.ts
228
+ var import_web3 = require("@solana/web3.js");
229
+ var import_spl_token = require("@solana/spl-token");
230
+
231
+ // src/utils/index.ts
232
+ init_wallet();
195
233
 
196
234
  // src/services/evm/payment-header.ts
197
235
  var import_ethers = require("ethers");
@@ -307,6 +345,7 @@ function getChainIdFromNetwork(network) {
307
345
  }
308
346
 
309
347
  // src/services/evm/payment-handler.ts
348
+ init_types();
310
349
  async function handleEvmPayment(endpoint, config, requestInit) {
311
350
  const { wallet, network, maxPaymentAmount } = config;
312
351
  const initialResponse = await fetch(endpoint, {
@@ -483,9 +522,16 @@ function createEvmPaymentFetch(config) {
483
522
 
484
523
  // src/utils/payment-helpers.ts
485
524
  var import_ethers2 = require("ethers");
486
- async function makePayment(networkType, merchantId, endpoint = PROD_BACK_URL) {
487
- endpoint = `${endpoint}/${merchantId}`;
525
+ init_common();
526
+ async function makePayment(networkType, merchantId, endpoint = PROD_BACK_URL, additionalParams) {
527
+ const fullEndpoint = `${endpoint}/${merchantId}`;
488
528
  let response;
529
+ const requestInit = additionalParams && Object.keys(additionalParams).length > 0 ? {
530
+ body: JSON.stringify(additionalParams),
531
+ headers: {
532
+ "Content-Type": "application/json"
533
+ }
534
+ } : {};
489
535
  if (networkType === "solana" /* SOLANA */ || networkType === "svm" /* SVM */) {
490
536
  const solana = window.solana;
491
537
  if (!solana) {
@@ -494,11 +540,11 @@ async function makePayment(networkType, merchantId, endpoint = PROD_BACK_URL) {
494
540
  if (!solana.isConnected) {
495
541
  await solana.connect();
496
542
  }
497
- response = await handleSvmPayment(endpoint, {
543
+ response = await handleSvmPayment(fullEndpoint, {
498
544
  wallet: solana,
499
545
  network: "solana"
500
546
  // Will use backend's network configuration
501
- });
547
+ }, requestInit);
502
548
  } else if (networkType === "evm" /* EVM */) {
503
549
  if (!window.ethereum) {
504
550
  throw new Error("\u8BF7\u5B89\u88C5 MetaMask \u94B1\u5305");
@@ -523,11 +569,11 @@ async function makePayment(networkType, merchantId, endpoint = PROD_BACK_URL) {
523
569
  });
524
570
  }
525
571
  };
526
- response = await handleEvmPayment(endpoint, {
572
+ response = await handleEvmPayment(fullEndpoint, {
527
573
  wallet,
528
574
  network: "base"
529
575
  // Will use backend's network configuration
530
- });
576
+ }, requestInit);
531
577
  } else {
532
578
  throw new Error(`\u4E0D\u652F\u6301\u7684\u7F51\u7EDC\u7C7B\u578B: ${networkType}`);
533
579
  }
@@ -577,6 +623,7 @@ function isEvmAddress(address) {
577
623
  }
578
624
  function getNetworkDisplayName(network) {
579
625
  const displayNames = {
626
+ "evm": "EVM",
580
627
  "ethereum": "Ethereum",
581
628
  "sepolia": "Sepolia Testnet",
582
629
  "base": "Base",
@@ -850,6 +897,7 @@ function getDefaultSolanaRpcUrl(network) {
850
897
  }
851
898
 
852
899
  // src/services/svm/payment-handler.ts
900
+ init_types();
853
901
  async function handleSvmPayment(endpoint, config, requestInit) {
854
902
  const { wallet, network, rpcUrl, maxPaymentAmount } = config;
855
903
  const initialResponse = await fetch(endpoint, {
@@ -874,7 +922,8 @@ async function handleSvmPayment(endpoint, config, requestInit) {
874
922
  "already_used": "This payment has already been used",
875
923
  "network_mismatch": "Payment network does not match",
876
924
  "invalid_payment": "Invalid payment data",
877
- "verification_failed": "Payment verification failed"
925
+ "verification_failed": "Payment verification failed",
926
+ "invalid_exact_svm_payload_transaction_simulation_failed": "Transaction simulation failed due to insufficient balance. Please check your wallet balance carefully and ensure you have enough funds to cover the payment and transaction fees."
878
927
  };
879
928
  const errorMessage = ERROR_MESSAGES[rawResponse.error] || `Payment failed: ${rawResponse.error}`;
880
929
  const error = new Error(errorMessage);
@@ -942,7 +991,8 @@ async function handleSvmPayment(endpoint, config, requestInit) {
942
991
  "already_used": "This payment has already been used",
943
992
  "network_mismatch": "Payment network does not match",
944
993
  "invalid_payment": "Invalid payment data",
945
- "verification_failed": "Payment verification failed"
994
+ "verification_failed": "Payment verification failed",
995
+ "invalid_exact_svm_payload_transaction_simulation_failed": "Transaction simulation failed due to insufficient balance. Please check your wallet balance carefully and ensure you have enough funds to cover the payment and transaction fees."
946
996
  };
947
997
  const errorMessage = ERROR_MESSAGES[retryData.error] || `Payment failed: ${retryData.error}`;
948
998
  const error = new Error(errorMessage);