Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@pythnetwork/hermes-client

Package Overview
Dependencies
Maintainers
4
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pythnetwork/hermes-client - npm Package Compare versions

Comparing version
1.3.1
to
1.4.0
+8
-6
lib/HermesClient.d.ts

@@ -1,2 +0,2 @@

import EventSource from "eventsource";
import { EventSource } from "eventsource";
import { schemas } from "./zodSchemas";

@@ -54,5 +54,6 @@ import { z } from "zod";

*/
getPriceFeeds(options?: {
getPriceFeeds({ fetchOptions, ...options }?: {
query?: string;
filter?: string;
fetchOptions?: RequestInit;
}): Promise<PriceFeedMetadata[]>;

@@ -70,5 +71,6 @@ /**

*/
getLatestPublisherCaps(options?: {
getLatestPublisherCaps({ fetchOptions, ...options }?: {
encoding?: EncodingType;
parsed?: boolean;
fetchOptions?: RequestInit;
}): Promise<PublisherCaps>;

@@ -92,3 +94,3 @@ /**

ignoreInvalidPriceIds?: boolean;
}): Promise<PriceUpdate>;
}, fetchOptions?: RequestInit): Promise<PriceUpdate>;
/**

@@ -112,3 +114,3 @@ * Fetch the price updates for a set of price feed IDs at a given timestamp.

ignoreInvalidPriceIds?: boolean;
}): Promise<PriceUpdate>;
}, fetchOptions?: RequestInit): Promise<PriceUpdate>;
/**

@@ -157,3 +159,3 @@ * Fetch streaming price updates for a set of price feed IDs.

ignoreInvalidPriceIds?: boolean;
}): Promise<TwapsResponse>;
}, fetchOptions?: RequestInit): Promise<TwapsResponse>;
private appendUrlSearchParams;

@@ -160,0 +162,0 @@ private buildURL;

@@ -1,1 +0,1 @@

{"version":3,"file":"HermesClient.d.ts","sourceRoot":"","sources":["../src/HermesClient.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"HermesClient.d.ts","sourceRoot":"","sources":["../src/HermesClient.ts"],"names":[],"mappings":"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"}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HermesClient = void 0;
const eventsource_1 = __importDefault(require("eventsource"));
const eventsource_1 = require("eventsource");
const zodSchemas_1 = require("./zodSchemas");

@@ -29,16 +26,13 @@ const utils_1 = require("./utils");

}
async httpRequest(url, schema, options, retries = this.httpRetries, backoff = 100 + Math.floor(Math.random() * 100), // Adding randomness to the initial backoff to avoid "thundering herd" scenario where a lot of clients that get kicked off all at the same time (say some script or something) and fail to connect all retry at exactly the same time too
externalAbortController) {
const controller = externalAbortController ?? new AbortController();
const { signal } = controller;
options = {
...options,
signal,
headers: { ...this.headers, ...options?.headers },
}; // Merge any existing options with the signal and headers
// Set a timeout to abort the request if it takes too long
const timeout = setTimeout(() => controller.abort(), this.timeout);
async httpRequest(url, schema, options, retries = this.httpRetries, backoff = 100 + Math.floor(Math.random() * 100) // Adding randomness to the initial backoff to avoid "thundering herd" scenario where a lot of clients that get kicked off all at the same time (say some script or something) and fail to connect all retry at exactly the same time too
) {
try {
const response = await fetch(url, options);
clearTimeout(timeout); // Clear the timeout if the request completes in time
const response = await fetch(url, {
...options,
signal: AbortSignal.any([
...(options?.signal ? [options.signal] : []),
AbortSignal.timeout(this.timeout),
]),
headers: { ...this.headers, ...options?.headers },
});
if (!response.ok) {

@@ -52,3 +46,2 @@ const errorBody = await response.text();

catch (error) {
clearTimeout(timeout);
if (retries > 0 &&

@@ -74,3 +67,3 @@ !(error instanceof Error && error.name === "AbortError")) {

*/
async getPriceFeeds(options) {
async getPriceFeeds({ fetchOptions, ...options } = {}) {
const url = this.buildURL("price_feeds");

@@ -80,3 +73,3 @@ if (options) {

}
return await this.httpRequest(url.toString(), zodSchemas_1.schemas.PriceFeedMetadata.array());
return await this.httpRequest(url.toString(), zodSchemas_1.schemas.PriceFeedMetadata.array(), fetchOptions);
}

@@ -94,3 +87,3 @@ /**

*/
async getLatestPublisherCaps(options) {
async getLatestPublisherCaps({ fetchOptions, ...options } = {}) {
const url = this.buildURL("updates/publisher_stake_caps/latest");

@@ -100,3 +93,3 @@ if (options) {

}
return await this.httpRequest(url.toString(), zodSchemas_1.schemas.LatestPublisherStakeCapsUpdateDataResponse);
return await this.httpRequest(url.toString(), zodSchemas_1.schemas.LatestPublisherStakeCapsUpdateDataResponse, fetchOptions);
}

@@ -116,3 +109,3 @@ /**

*/
async getLatestPriceUpdates(ids, options) {
async getLatestPriceUpdates(ids, options, fetchOptions) {
const url = this.buildURL("updates/price/latest");

@@ -126,3 +119,3 @@ for (const id of ids) {

}
return this.httpRequest(url.toString(), zodSchemas_1.schemas.PriceUpdate);
return this.httpRequest(url.toString(), zodSchemas_1.schemas.PriceUpdate, fetchOptions);
}

@@ -143,3 +136,3 @@ /**

*/
async getPriceUpdatesAtTimestamp(publishTime, ids, options) {
async getPriceUpdatesAtTimestamp(publishTime, ids, options, fetchOptions) {
const url = this.buildURL(`updates/price/${publishTime}`);

@@ -153,3 +146,3 @@ for (const id of ids) {

}
return this.httpRequest(url.toString(), zodSchemas_1.schemas.PriceUpdate);
return this.httpRequest(url.toString(), zodSchemas_1.schemas.PriceUpdate, fetchOptions);
}

@@ -182,3 +175,11 @@ /**

}
return new eventsource_1.default(url.toString(), { headers: this.headers });
return new eventsource_1.EventSource(url.toString(), {
fetch: (input, init) => fetch(input, {
...init,
headers: {
...init?.headers,
...this.headers,
},
}),
});
}

@@ -200,3 +201,3 @@ /**

*/
async getLatestTwaps(ids, window_seconds, options) {
async getLatestTwaps(ids, window_seconds, options, fetchOptions) {
const url = this.buildURL(`updates/twap/${window_seconds}/latest`);

@@ -210,3 +211,3 @@ for (const id of ids) {

}
return this.httpRequest(url.toString(), zodSchemas_1.schemas.TwapsResponse);
return this.httpRequest(url.toString(), zodSchemas_1.schemas.TwapsResponse, fetchOptions);
}

@@ -213,0 +214,0 @@ appendUrlSearchParams(url, params) {

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.camelToSnakeCaseObject = void 0;
exports.camelToSnakeCaseObject = camelToSnakeCaseObject;
function camelToSnakeCase(str) {

@@ -14,2 +14,1 @@ return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);

}
exports.camelToSnakeCaseObject = camelToSnakeCaseObject;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createApiClient = exports.api = exports.schemas = void 0;
exports.api = exports.schemas = void 0;
exports.createApiClient = createApiClient;
const core_1 = require("@zodios/core");

@@ -322,2 +323,1 @@ const zod_1 = require("zod");

}
exports.createApiClient = createApiClient;
{
"name": "@pythnetwork/hermes-client",
"version": "1.3.1",
"version": "1.4.0",
"description": "Pyth Hermes Client",

@@ -39,3 +39,2 @@ "author": {

"devDependencies": {
"@types/eventsource": "^1.1.15",
"@types/jest": "^29.4.0",

@@ -51,3 +50,3 @@ "@types/node": "^20.14.2",

"ts-jest": "^29.0.5",
"typescript": "^4.6.3",
"typescript": "catalog:",
"yargs": "^17.4.1"

@@ -57,6 +56,6 @@ },

"@zodios/core": "^10.9.6",
"eventsource": "^2.0.2",
"eventsource": "^3.0.5",
"zod": "^3.23.8"
},
"gitHead": "cdaf99e8629cd6af655a5f1c2c5750de9bc485dd"
"gitHead": "f5c4b3df87829b926d59a5058be74917eec05b90"
}