diff --git a/src/common/ArIO.ts b/src/common/ArIO.ts
index f988f673..a7aa9404 100644
--- a/src/common/ArIO.ts
+++ b/src/common/ArIO.ts
@@ -14,13 +14,12 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-import { ContractStateProvider, HTTPServiceInterface } from '../types.js';
-import { AxiosHTTPService } from './http.js';
+import { ContractStateProvider, HTTPClient } from '../types.js';
import { DefaultLogger } from './logger.js';
export class ArIO implements ContractStateProvider {
private contractStateProvider: ContractStateProvider;
- http: HTTPServiceInterface;
+ http: HTTPClient;
logger: DefaultLogger;
constructor({
@@ -35,7 +34,6 @@ export class ArIO implements ContractStateProvider {
}) {
this.contractStateProvider = contractStateProvider;
this.logger = logger;
- this.http = new AxiosHTTPService({ url: '', logger }); // empty url allows for full url to be passed in get and post requests instead of the endpoint
}
/**
diff --git a/src/common/ContractStateProviders/ArNSRemoteCache.ts b/src/common/ContractStateProviders/ArNSRemoteCache.ts
index ac7a7863..ece2b8ca 100644
--- a/src/common/ContractStateProviders/ArNSRemoteCache.ts
+++ b/src/common/ContractStateProviders/ArNSRemoteCache.ts
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-import { ContractStateProvider, HTTPServiceInterface } from '../../types.js';
+import { ContractStateProvider, HTTPClient } from '../../types.js';
import { validateArweaveId } from '../../utils/index.js';
import { BadRequest } from '../error.js';
import { AxiosHTTPService } from '../http.js';
@@ -22,24 +22,22 @@ import { DefaultLogger } from '../logger.js';
export class ArNSRemoteCache implements ContractStateProvider {
protected logger: DefaultLogger;
- http: HTTPServiceInterface;
+ http: HTTPClient;
constructor({
- url = 'api.arns.app',
- protocol = 'https',
+ url = 'https://api.arns.app',
logger = new DefaultLogger({
level: 'debug',
logFormat: 'simple',
}),
version = 'v1',
}: {
- protocol?: 'http' | 'https' | 'ws';
url?: string;
logger?: DefaultLogger;
version?: string;
}) {
this.logger = logger;
this.http = new AxiosHTTPService({
- url: `${protocol}://${url}/${version}`,
+ url: `${url}/${version}`,
logger,
});
}
@@ -54,24 +52,10 @@ export class ArNSRemoteCache implements ContractStateProvider {
}
this.logger.debug(`Fetching contract state`);
- const response = await this.http
- .get({ endpoint: `/contract/${contractTxId}` })
- .catch((error) => {
- this.logger.debug(`Failed to fetch contract state: ${error}`);
- return error;
- });
-
- if (!response) {
- throw new BadRequest(
- `Failed to fetch contract state. ${response?.status} ${response?.statusText()}`,
- );
- }
- const result = await response.json();
-
- this.logger.debug(
- `Fetched contract state. Size: ${response?.headers?.get('content-length')} bytes.`,
- );
+ const state = await this.http.get({
+ endpoint: `/contract/${contractTxId}`,
+ });
- return result;
+ return state;
}
}
diff --git a/src/common/http.ts b/src/common/http.ts
index 927ac5f4..fbb56cf5 100644
--- a/src/common/http.ts
+++ b/src/common/http.ts
@@ -18,22 +18,21 @@ import { AxiosInstance } from 'axios';
import { Readable } from 'stream';
import { ReadableStream } from 'stream/web';
-import { HTTPServiceInterface, Logger } from '../types.js';
+import { HTTPClient, Logger } from '../types.js';
import { createAxiosInstance } from '../utils/httpClient.js';
import { FailedRequestError } from './error.js';
-export class AxiosHTTPService implements HTTPServiceInterface {
+export class AxiosHTTPService implements HTTPClient {
protected axios: AxiosInstance;
protected logger: Logger;
// TODO: re-implement axios-retry. Currently that package is broken for nodenext.
constructor({
url,
- // retryConfig,
logger,
}: {
url: string;
- // retryConfig?: IAxiosRetryConfig;
+
logger: Logger;
}) {
this.logger = logger;
@@ -52,8 +51,6 @@ export class AxiosHTTPService implements HTTPServiceInterface {
}
},
},
- // retryConfig,
- // logger: this.logger,
});
}
async get({
diff --git a/src/common/logger.ts b/src/common/logger.ts
index af085173..b757d065 100644
--- a/src/common/logger.ts
+++ b/src/common/logger.ts
@@ -20,7 +20,7 @@ import { Logger } from '../types.js';
import { version } from '../version.js';
export class DefaultLogger implements Logger {
- logger: winston.Logger;
+ private logger: winston.Logger;
constructor({
level = 'info',
logFormat = 'simple',
diff --git a/src/types.ts b/src/types.ts
index 2f9834eb..ef09a2e8 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -34,7 +34,7 @@ export interface Logger {
}
/* eslint-enable @typescript-eslint/no-explicit-any */
-export interface HTTPServiceInterface {
+export interface HTTPClient {
get({
endpoint,
signal,
diff --git a/src/utils/httpClient.ts b/src/utils/httpClient.ts
index cb9c9cc6..7b7155cb 100644
--- a/src/utils/httpClient.ts
+++ b/src/utils/httpClient.ts
@@ -16,34 +16,13 @@
*/
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';
-// import { DefaultLogger } from '../common/logger.js';
-// import { Logger } from '../types.js';
-
-// import { version } from '../version.js';
-
// TODO: re-implement axios-retry. Currently latest version of axios-retry is broken for node-next builds on v4.0.0
export interface AxiosInstanceParameters {
axiosConfig?: Omit;
- // retryConfig?: Record;
- // logger?: Logger;
}
export const createAxiosInstance = ({
- //logger = new DefaultLogger(),
axiosConfig = {},
- // retryConfig = {
- // retryDelay: axiosRetry.exponentialDelay,
- // retries: 3,
- // retryCondition: (error) => {
- // return (
- // !(error instanceof CanceledError) &&
- // axiosRetry.isNetworkOrIdempotentRequestError(error)
- // );
- // },
- // onRetry: (retryCount, error) => {
- // logger.debug(`Request failed, ${error}. Retry attempt #${retryCount}...`);
- // },
- // },
}: AxiosInstanceParameters = {}): AxiosInstance => {
const axiosInstance = axios.create({
...axiosConfig,
@@ -53,9 +32,5 @@ export const createAxiosInstance = ({
validateStatus: () => true, // don't throw on non-200 status codes
});
- // eslint-disable-next-line
- // if (retryConfig.retries && retryConfig.retries > 0) {
- // axiosRetry(axiosInstance, retryConfig);
- // }
return axiosInstance;
};
diff --git a/tsconfig.json b/tsconfig.json
index 2d7d0657..0140d12c 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,6 @@
{
"compilerOptions": {
- "target": "es2021",
+ "target": "esnext",
"allowSyntheticDefaultImports": true,
"lib": ["esnext", "dom"],
"outDir": "./lib/esm",