Skip to content

Commit bf0e141

Browse files
committed
lint, format
1 parent 859e363 commit bf0e141

File tree

8 files changed

+252
-168
lines changed

8 files changed

+252
-168
lines changed

lazer/sdk/js/examples/history.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1+
/* eslint-disable no-console */
2+
13
import { displayParsedPrices } from "./util.js";
24
import { PythLazerClient } from "../src/index.js";
35

4-
const client = await PythLazerClient.create({ token: "your-token-here", logger: console });
6+
const client = await PythLazerClient.create({
7+
token: "your-token-here",
8+
logger: console,
9+
});
510

611
// Example 1: Get latest price for BTC using feed IDs
712
console.log("\n=== Example 1: Latest BTC price (requested with feed ID) ===");
@@ -29,7 +34,9 @@ displayParsedPrices(response2);
2934
// Example 3: Get historical price at specific timestamp
3035
console.log("\n=== Example 3: Historical BTC price at timestamp ===");
3136
const timestamp = 1_754_348_458_565_000;
32-
console.log(`Requesting price from timestamp: ${timestamp} (${new Date(timestamp / 1000).toISOString()})`);
37+
console.log(
38+
`Requesting price from timestamp: ${timestamp.toString()} (${new Date(timestamp / 1000).toISOString()})`,
39+
);
3340
const response3 = await client.get_price({
3441
timestamp: timestamp,
3542
priceFeedIds: [1],

lazer/sdk/js/examples/streaming.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,23 @@
22
/* eslint-disable @typescript-eslint/no-empty-function */
33

44
import { renderFeeds, refreshFeedDisplay } from "./util.js";
5+
import type { JsonUpdate } from "../src/index.js";
56
import { PythLazerClient } from "../src/index.js";
67

78
// Ignore debug messages
8-
console.debug = () => { };
9+
console.debug = () => {};
910

1011
// Store feed data for in-place updates
11-
const feedData = new Map<string, {
12-
priceFeedId: string | number;
13-
price: number;
14-
confidence: number | null;
15-
exponent: number;
16-
lastUpdate: Date;
17-
}>();
12+
const feedData = new Map<
13+
string,
14+
{
15+
priceFeedId: string | number;
16+
price: number;
17+
confidence: number | undefined;
18+
exponent: number;
19+
lastUpdate: Date;
20+
}
21+
>();
1822

1923
const client = await PythLazerClient.create({
2024
token: "your-token-here", // Replace with your actual access token
@@ -38,7 +42,7 @@ client.addMessageListener((message) => {
3842
switch (message.type) {
3943
case "json": {
4044
if (message.value.type == "streamUpdated") {
41-
refreshFeedDisplay(message.value, feedData);
45+
refreshFeedDisplay(message.value as JsonUpdate, feedData);
4246
}
4347
break;
4448
}
@@ -104,8 +108,8 @@ client.unsubscribe(1);
104108
client.unsubscribe(2);
105109
client.unsubscribe(3);
106110

107-
process.stdout.write('\u001B[2J\u001B[H');
108-
console.log('🛑 Shutting down Pyth Lazer demo after 30 seconds...');
109-
console.log('👋 Goodbye!');
111+
process.stdout.write("\u001B[2J\u001B[H");
112+
console.log("🛑 Shutting down Pyth Lazer demo after 30 seconds...");
113+
console.log("👋 Goodbye!");
110114

111115
client.shutdown();

lazer/sdk/js/examples/symbols.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
/* eslint-disable no-console */
2+
13
import { PythLazerClient } from "../src/index.js";
24

3-
const client = await PythLazerClient.create({ token: "your-token-here", logger: console });
5+
const client = await PythLazerClient.create({
6+
token: "your-token-here",
7+
logger: console,
8+
});
49

510
// Example 1: Get latest price for BTC using feed IDs
611
console.log("\n=== Example 1: Search feeds by name/symbol ===");

lazer/sdk/js/examples/util.ts

Lines changed: 103 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,127 @@
1-
import type { JsonUpdate, ParsedFeedPayload } from "../src/index.js";
1+
/* eslint-disable no-console */
22

3-
// Helper function to render all feeds in place
4-
export function renderFeeds(feedData: Map<string, {
5-
priceFeedId: string | number;
6-
price: number;
7-
confidence: number | null;
8-
exponent: number;
9-
lastUpdate: Date;
10-
}>) {
11-
// Clear screen and move cursor to top
12-
process.stdout.write('\u001B[2J\u001B[H');
3+
import type { JsonUpdate } from "../src/index.js";
134

14-
if (feedData.size === 0) {
15-
console.log('Waiting for price feed data...\n');
16-
return;
5+
// Helper function to render all feeds in place
6+
export function renderFeeds(
7+
feedData: Map<
8+
string,
9+
{
10+
priceFeedId: string | number;
11+
price: number;
12+
confidence: number | undefined;
13+
exponent: number;
14+
lastUpdate: Date;
1715
}
16+
>,
17+
) {
18+
// Clear screen and move cursor to top
19+
process.stdout.write("\u001B[2J\u001B[H");
1820

19-
console.log('🔴 Live Lazer Price Feeds\n');
20-
console.log('━'.repeat(80));
21+
if (feedData.size === 0) {
22+
console.log("Waiting for price feed data...\n");
23+
return;
24+
}
2125

22-
// Sort feeds by ID for consistent display order
23-
const sortedFeeds = [...feedData.values()].sort((a, b) => {
24-
const aId = String(a.priceFeedId);
25-
const bId = String(b.priceFeedId);
26-
return aId.localeCompare(bId);
27-
});
26+
console.log("🔴 Live Lazer Price Feeds\n");
27+
console.log("━".repeat(80));
2828

29-
for (const [index, feed] of sortedFeeds.entries()) {
30-
const readablePrice = feed.price * Math.pow(10, feed.exponent);
31-
const readableConfidence = feed.confidence === null ? null : feed.confidence * Math.pow(10, feed.exponent);
32-
const timeAgo = Math.round((Date.now() - feed.lastUpdate.getTime()));
29+
// Sort feeds by ID for consistent display order
30+
const sortedFeeds = [...feedData.values()].sort((a, b) => {
31+
const aId = String(a.priceFeedId);
32+
const bId = String(b.priceFeedId);
33+
return aId.localeCompare(bId);
34+
});
3335

34-
console.log(`\u001B[36m${index + 1}. Feed ID: ${feed.priceFeedId}\u001B[0m`);
35-
console.log(` 💰 Price: \u001B[32m$${readablePrice.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 8 })}\u001B[0m`);
36+
for (const [index, feed] of sortedFeeds.entries()) {
37+
const readablePrice = feed.price * Math.pow(10, feed.exponent);
38+
const readableConfidence =
39+
feed.confidence === undefined
40+
? undefined
41+
: feed.confidence * Math.pow(10, feed.exponent);
42+
const timeAgo = Math.round(Date.now() - feed.lastUpdate.getTime());
3643

37-
if (readableConfidence !== null) {
38-
console.log(` 📊 Confidence: \u001B[33m±$${readableConfidence.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 8 })}\u001B[0m`);
39-
}
44+
console.log(
45+
`\u001B[36m${(index + 1).toString()}. Feed ID: ${feed.priceFeedId.toString()}\u001B[0m`,
46+
);
47+
console.log(
48+
` 💰 Price: \u001B[32m$${readablePrice.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 8 })}\u001B[0m`,
49+
);
4050

41-
console.log(` ⏰ Updated: \u001B[90m${timeAgo}ms ago\u001B[0m`);
42-
console.log('');
51+
if (readableConfidence !== undefined) {
52+
console.log(
53+
` 📊 Confidence: \u001B[33m±$${readableConfidence.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 8 })}\u001B[0m`,
54+
);
4355
}
4456

45-
console.log('━'.repeat(80));
46-
console.log(`\u001B[90mLast refresh: ${new Date().toLocaleTimeString()}\u001B[0m`);
57+
console.log(
58+
` ⏰ Updated: \u001B[90m${timeAgo.toString()}ms ago\u001B[0m`,
59+
);
60+
console.log("");
61+
}
62+
63+
console.log("━".repeat(80));
64+
console.log(
65+
`\u001B[90mLast refresh: ${new Date().toLocaleTimeString()}\u001B[0m`,
66+
);
4767
}
4868

4969
// Helper function to update price feed data and refresh display
50-
export function refreshFeedDisplay(response: any, feedData: Map<string, {
51-
priceFeedId: string | number;
52-
price: number;
53-
confidence: number | null;
54-
exponent: number;
55-
lastUpdate: Date;
56-
}>) {
57-
if (response.parsed?.priceFeeds) {
58-
response.parsed.priceFeeds.forEach((feed: any, index: number) => {
59-
if (feed.price && feed.exponent !== undefined) {
60-
const feedId = feed.priceFeedId === undefined ? `feed_${index + 1}` : String(feed.priceFeedId);
61-
const readableConfidence = feed.confidence ? Number(feed.confidence) : null;
70+
export function refreshFeedDisplay(
71+
response: JsonUpdate,
72+
feedData: Map<
73+
string,
74+
{
75+
priceFeedId: string | number;
76+
price: number;
77+
confidence: number | undefined;
78+
exponent: number;
79+
lastUpdate: Date;
80+
}
81+
>,
82+
) {
83+
if (response.parsed?.priceFeeds) {
84+
for (const [index, feed] of response.parsed.priceFeeds.entries()) {
85+
if (feed.price && feed.exponent !== undefined) {
86+
const feedId = `feed_${(index + 1).toString()}`;
87+
const readableConfidence = feed.confidence
88+
? Number(feed.confidence)
89+
: undefined;
6290

63-
feedData.set(feedId, {
64-
priceFeedId: feed.priceFeedId === undefined ? `feed_${index + 1}` : feed.priceFeedId,
65-
price: Number(feed.price),
66-
confidence: readableConfidence,
67-
exponent: feed.exponent,
68-
lastUpdate: new Date()
69-
});
70-
}
91+
feedData.set(feedId, {
92+
priceFeedId: `feed_${(index + 1).toString()}`,
93+
price: Number(feed.price),
94+
confidence: readableConfidence,
95+
exponent: feed.exponent,
96+
lastUpdate: new Date(),
7197
});
72-
73-
renderFeeds(feedData);
98+
}
7499
}
100+
101+
renderFeeds(feedData);
102+
}
75103
}
76104

77105
// Helper function to calculate human-friendly price values
78106
export function displayParsedPrices(response: JsonUpdate) {
79-
if (response.parsed?.priceFeeds) {
80-
response.parsed.priceFeeds.forEach((feed: ParsedFeedPayload, index: number) => {
81-
if (feed.price && feed.exponent !== undefined) {
82-
const readablePrice = Number(feed.price) * Math.pow(10, feed.exponent);
83-
const readableConfidence = feed.confidence ? Number(feed.confidence) * Math.pow(10, feed.exponent) : null;
107+
if (response.parsed?.priceFeeds) {
108+
for (const [index, feed] of response.parsed.priceFeeds.entries()) {
109+
if (feed.price && feed.exponent !== undefined) {
110+
const readablePrice = Number(feed.price) * Math.pow(10, feed.exponent);
111+
const readableConfidence = feed.confidence
112+
? Number(feed.confidence) * Math.pow(10, feed.exponent)
113+
: undefined;
84114

85-
console.log(`Feed ${feed.priceFeedId || index + 1}:`);
86-
console.log(`\tPrice: $${readablePrice.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 8 })}`);
87-
if (readableConfidence !== null) {
88-
console.log(`\tConfidence: ±$${readableConfidence.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 8 })}`);
89-
}
90-
}
91-
});
115+
console.log(`Feed ${(index + 1).toString()}:`);
116+
console.log(
117+
`\tPrice: $${readablePrice.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 8 })}`,
118+
);
119+
if (readableConfidence !== undefined) {
120+
console.log(
121+
`\tConfidence: ±$${readableConfidence.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 8 })}`,
122+
);
123+
}
124+
}
92125
}
126+
}
93127
}

0 commit comments

Comments
 (0)