@faremeter/info 0.16.0 → 0.17.1

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.
@@ -3,9 +3,95 @@ import t from "tap";
3
3
  import * as solana from "./solana.js";
4
4
  await t.test("basicClusterLookup", async (t) => {
5
5
  t.ok(solana.isKnownCluster("mainnet-beta"));
6
+ t.ok(solana.isKnownCluster("devnet"));
7
+ t.ok(solana.isKnownCluster("testnet"));
6
8
  t.ok(!solana.isKnownCluster("notacluster"));
7
9
  t.end();
8
10
  });
11
+ await t.test("caip2Conversions", async (t) => {
12
+ await t.test("clusterToCAIP2", (t) => {
13
+ t.equal(solana.clusterToCAIP2("mainnet-beta").caip2, "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
14
+ t.equal(solana.clusterToCAIP2("devnet").caip2, "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
15
+ t.equal(solana.clusterToCAIP2("testnet").caip2, "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z");
16
+ t.end();
17
+ });
18
+ await t.test("caip2ToCluster", (t) => {
19
+ t.equal(solana.caip2ToCluster("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"), "mainnet-beta");
20
+ t.equal(solana.caip2ToCluster("solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"), "devnet");
21
+ t.equal(solana.caip2ToCluster("solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"), "testnet");
22
+ t.equal(solana.caip2ToCluster("solana:unknown"), null);
23
+ t.end();
24
+ });
25
+ await t.test("legacyNetworkIdToCAIP2", (t) => {
26
+ t.equal(solana.legacyNetworkIdToCAIP2("solana-mainnet-beta")?.caip2, "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
27
+ t.equal(solana.legacyNetworkIdToCAIP2("solana")?.caip2, "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
28
+ t.equal(solana.legacyNetworkIdToCAIP2("solana-devnet")?.caip2, "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
29
+ t.equal(solana.legacyNetworkIdToCAIP2("solana-testnet")?.caip2, "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z");
30
+ t.equal(solana.legacyNetworkIdToCAIP2("unknown"), null);
31
+ t.end();
32
+ });
33
+ await t.test("normalizeNetworkId", (t) => {
34
+ t.equal(solana.normalizeNetworkId("mainnet-beta"), "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
35
+ t.equal(solana.normalizeNetworkId("devnet"), "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
36
+ t.equal(solana.normalizeNetworkId("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"), "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
37
+ t.equal(solana.normalizeNetworkId("solana-devnet"), "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
38
+ t.end();
39
+ });
40
+ t.end();
41
+ });
42
+ await t.test("lookupX402Network", async (t) => {
43
+ t.equal(solana.lookupX402Network("mainnet-beta").caip2, "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
44
+ t.equal(solana.lookupX402Network("devnet").caip2, "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
45
+ t.equal(solana.lookupX402Network("solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1").caip2, "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
46
+ t.throws(() => solana.lookupX402Network("unknown-network"));
47
+ t.end();
48
+ });
49
+ await t.test("getV1NetworkIds", async (t) => {
50
+ const mainnetIds = solana.getV1NetworkIds("mainnet-beta");
51
+ t.equal(mainnetIds.length, 2);
52
+ t.ok(mainnetIds.includes("solana-mainnet-beta"));
53
+ t.ok(mainnetIds.includes("solana"));
54
+ const devnetIds = solana.getV1NetworkIds("devnet");
55
+ t.equal(devnetIds.length, 1);
56
+ t.ok(devnetIds.includes("solana-devnet"));
57
+ const testnetIds = solana.getV1NetworkIds("testnet");
58
+ t.equal(testnetIds.length, 1);
59
+ t.ok(testnetIds.includes("solana-testnet"));
60
+ t.end();
61
+ });
62
+ await t.test("x402Exact returns v1-compatible requirements", async (t) => {
63
+ await t.test("mainnet-beta returns two requirements with legacy network IDs", (t) => {
64
+ const reqs = solana.x402Exact({
65
+ network: "mainnet-beta",
66
+ asset: "USDC",
67
+ amount: "1000000",
68
+ payTo: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
69
+ });
70
+ t.equal(reqs.length, 2);
71
+ const networks = reqs.map((r) => r.network);
72
+ t.ok(networks.includes("solana-mainnet-beta"));
73
+ t.ok(networks.includes("solana"));
74
+ for (const req of reqs) {
75
+ t.equal(req.scheme, "exact");
76
+ t.equal(req.asset, "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
77
+ t.equal(req.maxAmountRequired, "1000000");
78
+ }
79
+ t.end();
80
+ });
81
+ await t.test("devnet returns one requirement with legacy network ID", (t) => {
82
+ const reqs = solana.x402Exact({
83
+ network: "devnet",
84
+ asset: "USDC",
85
+ amount: "500000",
86
+ payTo: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
87
+ });
88
+ t.equal(reqs.length, 1);
89
+ t.equal(reqs[0]?.network, "solana-devnet");
90
+ t.equal(reqs[0]?.scheme, "exact");
91
+ t.end();
92
+ });
93
+ t.end();
94
+ });
9
95
  await t.test("basicSPLTokenLookup", async (t) => {
10
96
  await t.test((t) => {
11
97
  const info = solana.lookupKnownSPLToken("devnet", "USDC");