Skip to content

Commit 39edc3e

Browse files
committed
feat(lazer): add js example
1 parent 69fc257 commit 39edc3e

File tree

5 files changed

+334
-0
lines changed

5 files changed

+334
-0
lines changed

lazer/js/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
tsconfig.tsbuildinfo

lazer/js/package-lock.json

Lines changed: 264 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lazer/js/package.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "pyth-lazer-js-example",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"type": "module",
7+
"scripts": {
8+
"start": "node --loader ts-node/esm src/index.js",
9+
"test": "echo \"Error: no test specified\" && exit 1"
10+
},
11+
"author": "",
12+
"license": "Apache-2.0",
13+
"dependencies": {
14+
"@pythnetwork/pyth-lazer-sdk": "^0.1.1"
15+
},
16+
"devDependencies": {
17+
"@cprussin/tsconfig": "^3.0.1",
18+
"ts-node": "^10.9.2",
19+
"typescript": "^5.7.2"
20+
}
21+
}

lazer/js/src/index.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { PythLazerClient } from "@pythnetwork/pyth-lazer-sdk";
2+
3+
/* eslint-disable no-console */
4+
const client = new PythLazerClient("wss://pyth-lazer-staging.dourolabs.app/v1/stream", "my_token");
5+
client.addMessageListener((message) => {
6+
console.log("got message:", message);
7+
switch (message.type) {
8+
case "json": {
9+
if (message.value.type == "streamUpdated") {
10+
console.log(
11+
"stream updated for subscription",
12+
message.value.subscriptionId,
13+
":",
14+
message.value.parsed?.priceFeeds
15+
);
16+
}
17+
break;
18+
}
19+
case "binary": {
20+
if ("solana" in message.value) {
21+
console.log("solana message:", message.value.solana?.toString("hex"));
22+
}
23+
if ("evm" in message.value) {
24+
console.log("evm message:", message.value.evm?.toString("hex"));
25+
}
26+
break;
27+
}
28+
}
29+
});
30+
client.ws.addEventListener("open", () => {
31+
client.send({
32+
type: "subscribe",
33+
subscriptionId: 1,
34+
priceFeedIds: [1, 2],
35+
properties: ["price"],
36+
chains: ["solana"],
37+
deliveryFormat: "json",
38+
channel: "fixed_rate@200ms",
39+
jsonBinaryEncoding: "hex",
40+
});
41+
});

lazer/js/tsconfig.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": "@cprussin/tsconfig/base.json",
3+
"exclude": [
4+
"node_modules",
5+
"dist"
6+
]
7+
}

0 commit comments

Comments
 (0)