🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@aptos-labs/aptos-client

Package Overview
Dependencies
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aptos-labs/aptos-client - npm Package Compare versions

Comparing version
1.2.0
to
2.0.0
+8
-1
dist/browser/index.browser.d.mts

@@ -26,3 +26,10 @@ type AptosClientResponse<Res> = {

declare function jsonRequest<Res>(options: AptosClientRequest): Promise<AptosClientResponse<Res>>;
/**
* Used for binary responses, such as BCS outputs
*
* @experimental
* @param options
*/
declare function bcsRequest(options: AptosClientRequest): Promise<AptosClientResponse<ArrayBuffer>>;
export { aptosClient as default, jsonRequest };
export { bcsRequest, aptosClient as default, jsonRequest };

@@ -26,3 +26,10 @@ type AptosClientResponse<Res> = {

declare function jsonRequest<Res>(options: AptosClientRequest): Promise<AptosClientResponse<Res>>;
/**
* Used for binary responses, such as BCS outputs
*
* @experimental
* @param options
*/
declare function bcsRequest(options: AptosClientRequest): Promise<AptosClientResponse<ArrayBuffer>>;
export { aptosClient as default, jsonRequest };
export { bcsRequest, aptosClient as default, jsonRequest };
+51
-33
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;

@@ -20,10 +18,2 @@ var __export = (target, all) => {

};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

@@ -34,2 +24,3 @@

__export(index_browser_exports, {
bcsRequest: () => bcsRequest,
default: () => aptosClient,

@@ -39,3 +30,2 @@ jsonRequest: () => jsonRequest

module.exports = __toCommonJS(index_browser_exports);
var import_axios = __toESM(require("axios"));
async function aptosClient(options) {

@@ -45,33 +35,61 @@ return jsonRequest(options);

async function jsonRequest(options) {
var _a;
const { params, method, url, headers, body, overrides } = options;
const { requestUrl, requestConfig } = buildRequest(options);
const res = await fetch(requestUrl, requestConfig);
const data = await res.json();
return {
status: res.status,
statusText: res.statusText,
data,
headers: res.headers,
config: requestConfig
};
}
async function bcsRequest(options) {
const { requestUrl, requestConfig } = buildRequest(options);
const res = await fetch(requestUrl, requestConfig);
const data = await res.arrayBuffer();
return {
status: res.status,
statusText: res.statusText,
data,
headers: res.headers,
config: requestConfig
};
}
function buildRequest(options) {
var _a, _b, _c;
const headers = new Headers();
Object.entries((_a = options == null ? void 0 : options.headers) != null ? _a : {}).forEach(([key, value]) => {
headers.append(key, String(value));
});
const body = options.body instanceof Uint8Array ? options.body : JSON.stringify(options.body);
const withCredentialsOption = (_b = options.overrides) == null ? void 0 : _b.WITH_CREDENTIALS;
let credentials;
if (withCredentialsOption === false) {
credentials = "omit";
} else if (withCredentialsOption === true) {
credentials = "include";
} else {
credentials = withCredentialsOption != null ? withCredentialsOption : "include";
}
const requestConfig = {
method: options.method,
headers,
method,
url,
params,
data: body,
withCredentials: (_a = overrides == null ? void 0 : overrides.WITH_CREDENTIALS) != null ? _a : true
body,
credentials
};
try {
const response = await (0, import_axios.default)(requestConfig);
return {
status: response.status,
statusText: response.statusText,
data: response.data,
headers: response.headers,
config: response.config
};
} catch (error) {
const axiosError = error;
if (axiosError.response) {
return axiosError.response;
const params = new URLSearchParams();
Object.entries((_c = options.params) != null ? _c : {}).forEach(([key, value]) => {
if (value !== void 0) {
params.append(key, String(value));
}
throw error;
}
});
const requestUrl = options.url + (params.size > 0 ? `?${params.toString()}` : "");
return { requestUrl, requestConfig };
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
bcsRequest,
jsonRequest
});
//# sourceMappingURL=index.browser.js.map

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

{"version":3,"sources":["../../src/index.browser.ts"],"sourcesContent":["import axios, { AxiosRequestConfig, AxiosError } from \"axios\";\nimport { AptosClientRequest, AptosClientResponse } from \"./types\";\n\n/**\n * Used for JSON responses\n *\n * @param options\n */\nexport default async function aptosClient<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(options);\n}\n\nexport async function jsonRequest<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { params, method, url, headers, body, overrides } = options;\n const requestConfig: AxiosRequestConfig = {\n headers,\n method,\n url,\n params,\n data: body,\n withCredentials: overrides?.WITH_CREDENTIALS ?? true,\n };\n\n try {\n const response = await axios(requestConfig);\n return {\n status: response.status,\n statusText: response.statusText!,\n data: response.data,\n headers: response.headers,\n config: response.config,\n };\n } catch (error) {\n const axiosError = error as AxiosError<Res>;\n if (axiosError.response) {\n return axiosError.response;\n }\n throw error;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsD;AAQtD,eAAO,YACL,SACmC;AACnC,SAAO,YAAiB,OAAO;AACjC;AAEA,eAAsB,YACpB,SACmC;AAhBrC;AAiBE,QAAM,EAAE,QAAQ,QAAQ,KAAK,SAAS,MAAM,UAAU,IAAI;AAC1D,QAAM,gBAAoC;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,kBAAiB,4CAAW,qBAAX,YAA+B;AAAA,EAClD;AAEA,MAAI;AACF,UAAM,WAAW,UAAM,aAAAA,SAAM,aAAa;AAC1C,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,MACjB,YAAY,SAAS;AAAA,MACrB,MAAM,SAAS;AAAA,MACf,SAAS,SAAS;AAAA,MAClB,QAAQ,SAAS;AAAA,IACnB;AAAA,EACF,SAAS,OAAO;AACd,UAAM,aAAa;AACnB,QAAI,WAAW,UAAU;AACvB,aAAO,WAAW;AAAA,IACpB;AACA,UAAM;AAAA,EACR;AACF;","names":["axios"]}
{"version":3,"sources":["../../src/index.browser.ts"],"sourcesContent":["import { AptosClientRequest, AptosClientResponse } from \"./types\";\n\n/**\n * Used for JSON responses\n *\n * @param options\n */\nexport default async function aptosClient<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(options);\n}\n\nexport async function jsonRequest<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { requestUrl, requestConfig } = buildRequest(options);\n\n const res = await fetch(requestUrl, requestConfig);\n const data = await res.json();\n\n return {\n status: res.status,\n statusText: res.statusText,\n data,\n headers: res.headers,\n config: requestConfig,\n };\n}\n\n/**\n * Used for binary responses, such as BCS outputs\n *\n * @experimental\n * @param options\n */\nexport async function bcsRequest(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<ArrayBuffer>> {\n const { requestUrl, requestConfig } = buildRequest(options);\n\n const res = await fetch(requestUrl, requestConfig);\n const data = await res.arrayBuffer();\n\n return {\n status: res.status,\n statusText: res.statusText,\n data,\n headers: res.headers,\n config: requestConfig,\n };\n}\n\nfunction buildRequest(options: AptosClientRequest) {\n const headers = new Headers();\n Object.entries(options?.headers ?? {}).forEach(([key, value]) => {\n headers.append(key, String(value));\n });\n\n const body =\n options.body instanceof Uint8Array\n ? options.body\n : JSON.stringify(options.body);\n\n const withCredentialsOption = options.overrides?.WITH_CREDENTIALS;\n let credentials: RequestCredentials;\n if (withCredentialsOption === false) {\n credentials = \"omit\";\n } else if (withCredentialsOption === true) {\n credentials = \"include\";\n } else {\n credentials = withCredentialsOption ?? \"include\";\n }\n\n const requestConfig: RequestInit = {\n method: options.method,\n headers,\n body,\n credentials,\n };\n\n const params = new URLSearchParams();\n Object.entries(options.params ?? {}).forEach(([key, value]) => {\n if (value !== undefined) {\n params.append(key, String(value));\n }\n });\n\n const requestUrl =\n options.url + (params.size > 0 ? `?${params.toString()}` : \"\");\n\n return { requestUrl, requestConfig };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,eAAO,YACL,SACmC;AACnC,SAAO,YAAiB,OAAO;AACjC;AAEA,eAAsB,YACpB,SACmC;AACnC,QAAM,EAAE,YAAY,cAAc,IAAI,aAAa,OAAO;AAE1D,QAAM,MAAM,MAAM,MAAM,YAAY,aAAa;AACjD,QAAM,OAAO,MAAM,IAAI,KAAK;AAE5B,SAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,YAAY,IAAI;AAAA,IAChB;AAAA,IACA,SAAS,IAAI;AAAA,IACb,QAAQ;AAAA,EACV;AACF;AAQA,eAAsB,WACpB,SAC2C;AAC3C,QAAM,EAAE,YAAY,cAAc,IAAI,aAAa,OAAO;AAE1D,QAAM,MAAM,MAAM,MAAM,YAAY,aAAa;AACjD,QAAM,OAAO,MAAM,IAAI,YAAY;AAEnC,SAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,YAAY,IAAI;AAAA,IAChB;AAAA,IACA,SAAS,IAAI;AAAA,IACb,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,aAAa,SAA6B;AArDnD;AAsDE,QAAM,UAAU,IAAI,QAAQ;AAC5B,SAAO,SAAQ,wCAAS,YAAT,YAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/D,YAAQ,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,EACnC,CAAC;AAED,QAAM,OACJ,QAAQ,gBAAgB,aACpB,QAAQ,OACR,KAAK,UAAU,QAAQ,IAAI;AAEjC,QAAM,yBAAwB,aAAQ,cAAR,mBAAmB;AACjD,MAAI;AACJ,MAAI,0BAA0B,OAAO;AACnC,kBAAc;AAAA,EAChB,WAAW,0BAA0B,MAAM;AACzC,kBAAc;AAAA,EAChB,OAAO;AACL,kBAAc,wDAAyB;AAAA,EACzC;AAEA,QAAM,gBAA6B;AAAA,IACjC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAAS,IAAI,gBAAgB;AACnC,SAAO,SAAQ,aAAQ,WAAR,YAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC7D,QAAI,UAAU,QAAW;AACvB,aAAO,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,IAClC;AAAA,EACF,CAAC;AAED,QAAM,aACJ,QAAQ,OAAO,OAAO,OAAO,IAAI,IAAI,OAAO,SAAS,CAAC,KAAK;AAE7D,SAAO,EAAE,YAAY,cAAc;AACrC;","names":[]}
// src/index.browser.ts
import axios from "axios";
async function aptosClient(options) {

@@ -7,30 +6,58 @@ return jsonRequest(options);

async function jsonRequest(options) {
var _a;
const { params, method, url, headers, body, overrides } = options;
const { requestUrl, requestConfig } = buildRequest(options);
const res = await fetch(requestUrl, requestConfig);
const data = await res.json();
return {
status: res.status,
statusText: res.statusText,
data,
headers: res.headers,
config: requestConfig
};
}
async function bcsRequest(options) {
const { requestUrl, requestConfig } = buildRequest(options);
const res = await fetch(requestUrl, requestConfig);
const data = await res.arrayBuffer();
return {
status: res.status,
statusText: res.statusText,
data,
headers: res.headers,
config: requestConfig
};
}
function buildRequest(options) {
var _a, _b, _c;
const headers = new Headers();
Object.entries((_a = options == null ? void 0 : options.headers) != null ? _a : {}).forEach(([key, value]) => {
headers.append(key, String(value));
});
const body = options.body instanceof Uint8Array ? options.body : JSON.stringify(options.body);
const withCredentialsOption = (_b = options.overrides) == null ? void 0 : _b.WITH_CREDENTIALS;
let credentials;
if (withCredentialsOption === false) {
credentials = "omit";
} else if (withCredentialsOption === true) {
credentials = "include";
} else {
credentials = withCredentialsOption != null ? withCredentialsOption : "include";
}
const requestConfig = {
method: options.method,
headers,
method,
url,
params,
data: body,
withCredentials: (_a = overrides == null ? void 0 : overrides.WITH_CREDENTIALS) != null ? _a : true
body,
credentials
};
try {
const response = await axios(requestConfig);
return {
status: response.status,
statusText: response.statusText,
data: response.data,
headers: response.headers,
config: response.config
};
} catch (error) {
const axiosError = error;
if (axiosError.response) {
return axiosError.response;
const params = new URLSearchParams();
Object.entries((_c = options.params) != null ? _c : {}).forEach(([key, value]) => {
if (value !== void 0) {
params.append(key, String(value));
}
throw error;
}
});
const requestUrl = options.url + (params.size > 0 ? `?${params.toString()}` : "");
return { requestUrl, requestConfig };
}
export {
bcsRequest,
aptosClient as default,

@@ -37,0 +64,0 @@ jsonRequest

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

{"version":3,"sources":["../../src/index.browser.ts"],"sourcesContent":["import axios, { AxiosRequestConfig, AxiosError } from \"axios\";\nimport { AptosClientRequest, AptosClientResponse } from \"./types\";\n\n/**\n * Used for JSON responses\n *\n * @param options\n */\nexport default async function aptosClient<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(options);\n}\n\nexport async function jsonRequest<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { params, method, url, headers, body, overrides } = options;\n const requestConfig: AxiosRequestConfig = {\n headers,\n method,\n url,\n params,\n data: body,\n withCredentials: overrides?.WITH_CREDENTIALS ?? true,\n };\n\n try {\n const response = await axios(requestConfig);\n return {\n status: response.status,\n statusText: response.statusText!,\n data: response.data,\n headers: response.headers,\n config: response.config,\n };\n } catch (error) {\n const axiosError = error as AxiosError<Res>;\n if (axiosError.response) {\n return axiosError.response;\n }\n throw error;\n }\n}\n"],"mappings":";AAAA,OAAO,WAA+C;AAQtD,eAAO,YACL,SACmC;AACnC,SAAO,YAAiB,OAAO;AACjC;AAEA,eAAsB,YACpB,SACmC;AAhBrC;AAiBE,QAAM,EAAE,QAAQ,QAAQ,KAAK,SAAS,MAAM,UAAU,IAAI;AAC1D,QAAM,gBAAoC;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,kBAAiB,4CAAW,qBAAX,YAA+B;AAAA,EAClD;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,aAAa;AAC1C,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,MACjB,YAAY,SAAS;AAAA,MACrB,MAAM,SAAS;AAAA,MACf,SAAS,SAAS;AAAA,MAClB,QAAQ,SAAS;AAAA,IACnB;AAAA,EACF,SAAS,OAAO;AACd,UAAM,aAAa;AACnB,QAAI,WAAW,UAAU;AACvB,aAAO,WAAW;AAAA,IACpB;AACA,UAAM;AAAA,EACR;AACF;","names":[]}
{"version":3,"sources":["../../src/index.browser.ts"],"sourcesContent":["import { AptosClientRequest, AptosClientResponse } from \"./types\";\n\n/**\n * Used for JSON responses\n *\n * @param options\n */\nexport default async function aptosClient<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(options);\n}\n\nexport async function jsonRequest<Res>(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { requestUrl, requestConfig } = buildRequest(options);\n\n const res = await fetch(requestUrl, requestConfig);\n const data = await res.json();\n\n return {\n status: res.status,\n statusText: res.statusText,\n data,\n headers: res.headers,\n config: requestConfig,\n };\n}\n\n/**\n * Used for binary responses, such as BCS outputs\n *\n * @experimental\n * @param options\n */\nexport async function bcsRequest(\n options: AptosClientRequest,\n): Promise<AptosClientResponse<ArrayBuffer>> {\n const { requestUrl, requestConfig } = buildRequest(options);\n\n const res = await fetch(requestUrl, requestConfig);\n const data = await res.arrayBuffer();\n\n return {\n status: res.status,\n statusText: res.statusText,\n data,\n headers: res.headers,\n config: requestConfig,\n };\n}\n\nfunction buildRequest(options: AptosClientRequest) {\n const headers = new Headers();\n Object.entries(options?.headers ?? {}).forEach(([key, value]) => {\n headers.append(key, String(value));\n });\n\n const body =\n options.body instanceof Uint8Array\n ? options.body\n : JSON.stringify(options.body);\n\n const withCredentialsOption = options.overrides?.WITH_CREDENTIALS;\n let credentials: RequestCredentials;\n if (withCredentialsOption === false) {\n credentials = \"omit\";\n } else if (withCredentialsOption === true) {\n credentials = \"include\";\n } else {\n credentials = withCredentialsOption ?? \"include\";\n }\n\n const requestConfig: RequestInit = {\n method: options.method,\n headers,\n body,\n credentials,\n };\n\n const params = new URLSearchParams();\n Object.entries(options.params ?? {}).forEach(([key, value]) => {\n if (value !== undefined) {\n params.append(key, String(value));\n }\n });\n\n const requestUrl =\n options.url + (params.size > 0 ? `?${params.toString()}` : \"\");\n\n return { requestUrl, requestConfig };\n}\n"],"mappings":";AAOA,eAAO,YACL,SACmC;AACnC,SAAO,YAAiB,OAAO;AACjC;AAEA,eAAsB,YACpB,SACmC;AACnC,QAAM,EAAE,YAAY,cAAc,IAAI,aAAa,OAAO;AAE1D,QAAM,MAAM,MAAM,MAAM,YAAY,aAAa;AACjD,QAAM,OAAO,MAAM,IAAI,KAAK;AAE5B,SAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,YAAY,IAAI;AAAA,IAChB;AAAA,IACA,SAAS,IAAI;AAAA,IACb,QAAQ;AAAA,EACV;AACF;AAQA,eAAsB,WACpB,SAC2C;AAC3C,QAAM,EAAE,YAAY,cAAc,IAAI,aAAa,OAAO;AAE1D,QAAM,MAAM,MAAM,MAAM,YAAY,aAAa;AACjD,QAAM,OAAO,MAAM,IAAI,YAAY;AAEnC,SAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,YAAY,IAAI;AAAA,IAChB;AAAA,IACA,SAAS,IAAI;AAAA,IACb,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,aAAa,SAA6B;AArDnD;AAsDE,QAAM,UAAU,IAAI,QAAQ;AAC5B,SAAO,SAAQ,wCAAS,YAAT,YAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/D,YAAQ,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,EACnC,CAAC;AAED,QAAM,OACJ,QAAQ,gBAAgB,aACpB,QAAQ,OACR,KAAK,UAAU,QAAQ,IAAI;AAEjC,QAAM,yBAAwB,aAAQ,cAAR,mBAAmB;AACjD,MAAI;AACJ,MAAI,0BAA0B,OAAO;AACnC,kBAAc;AAAA,EAChB,WAAW,0BAA0B,MAAM;AACzC,kBAAc;AAAA,EAChB,OAAO;AACL,kBAAc,wDAAyB;AAAA,EACzC;AAEA,QAAM,gBAA6B;AAAA,IACjC,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAAS,IAAI,gBAAgB;AACnC,SAAO,SAAQ,aAAQ,WAAR,YAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC7D,QAAI,UAAU,QAAW;AACvB,aAAO,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,IAClC;AAAA,EACF,CAAC;AAED,QAAM,aACJ,QAAQ,OAAO,OAAO,OAAO,IAAI,IAAI,OAAO,SAAS,CAAC,KAAK;AAE7D,SAAO,EAAE,YAAY,cAAc;AACrC;","names":[]}

@@ -25,3 +25,10 @@ type AptosClientResponse<Res> = {

declare function jsonRequest<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
/**
* Used for binary responses, such as BCS outputs
*
* @experimental
* @param requestOptions
*/
declare function bcsRequest(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
export { aptosClient as default, jsonRequest };
export { bcsRequest, aptosClient as default, jsonRequest };

@@ -25,3 +25,10 @@ type AptosClientResponse<Res> = {

declare function jsonRequest<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
/**
* Used for binary responses, such as BCS outputs
*
* @experimental
* @param requestOptions
*/
declare function bcsRequest(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
export { aptosClient as default, jsonRequest };
export { bcsRequest, aptosClient as default, jsonRequest };

@@ -33,2 +33,3 @@ "use strict";

__export(index_node_exports, {
bcsRequest: () => bcsRequest,
default: () => aptosClient,

@@ -166,2 +167,56 @@ jsonRequest: () => jsonRequest

}
async function bcsRequest(requestOptions) {
const { params, method, url, headers, body } = requestOptions;
const request = {
http2: true,
searchParams: convertBigIntToString(params),
method,
url,
responseType: "buffer",
headers,
hooks: {
beforeRequest: [
(options) => {
const cookies = cookieJar.getCookies(new URL(options.url));
if ((cookies == null ? void 0 : cookies.length) > 0 && options.headers) {
options.headers.cookie = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join("; ");
}
}
],
afterResponse: [
(response) => {
if (Array.isArray(response.headers["set-cookie"])) {
response.headers["set-cookie"].forEach((c) => {
cookieJar.setCookie(new URL(response.url), c);
});
}
return response;
}
]
}
};
if (body) {
if (body instanceof Uint8Array) {
request.body = Buffer.from(body);
} else {
request.body = Buffer.from(JSON.stringify(body));
}
}
try {
switch (method) {
case "GET":
return parseResponse(await import_got.default.get(request));
case "POST":
return parseResponse(await import_got.default.post(request));
default:
}
} catch (error) {
const gotError = error;
if (gotError.response) {
return parseResponse(gotError.response);
}
throw error;
}
throw new Error(`Unsupported method: ${method}`);
}
function parseResponse(response) {

@@ -194,4 +249,5 @@ return {

0 && (module.exports = {
bcsRequest,
jsonRequest
});
//# sourceMappingURL=index.node.js.map

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

{"version":3,"sources":["../../src/index.node.ts","../../src/cookieJar.ts"],"sourcesContent":["import got, {\n OptionsOfBufferResponseBody,\n OptionsOfJSONResponseBody,\n RequestError,\n Response,\n} from \"got\";\nimport { CookieJar } from \"./cookieJar\";\nimport { AptosClientRequest, AptosClientResponse } from \"./types\";\n\nconst cookieJar = new CookieJar();\n\n/**\n * Used for JSON responses\n * @param requestOptions\n */\nexport default async function aptosClient<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(requestOptions);\n}\n\nexport async function jsonRequest<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { params, method, url, headers, body } = requestOptions;\n\n const request: OptionsOfJSONResponseBody = {\n http2: true,\n searchParams: convertBigIntToString(params),\n method,\n url,\n responseType: \"json\",\n headers,\n hooks: {\n beforeRequest: [\n (options) => {\n const cookies = cookieJar.getCookies(new URL(options.url!));\n\n if (cookies?.length > 0 && options.headers) {\n /* eslint-disable no-param-reassign */\n options.headers.cookie = cookies\n .map((cookie: any) => `${cookie.name}=${cookie.value}`)\n .join(\"; \");\n }\n },\n ],\n afterResponse: [\n (response) => {\n if (Array.isArray(response.headers[\"set-cookie\"])) {\n response.headers[\"set-cookie\"].forEach((c) => {\n cookieJar.setCookie(new URL(response.url!), c);\n });\n }\n return response;\n },\n ],\n },\n };\n\n if (body) {\n if (body instanceof Uint8Array) {\n request.body = Buffer.from(body);\n } else {\n request.body = Buffer.from(JSON.stringify(body));\n }\n }\n\n try {\n const response = await got<Res>(request);\n return parseResponse<Res>(response);\n } catch (error) {\n const gotError = error as RequestError;\n if (gotError.response) {\n return parseResponse<Res>(gotError.response as Response<Res>);\n }\n throw error;\n }\n}\n\nfunction parseResponse<Res>(response: Response<Res>): AptosClientResponse<Res> {\n return {\n status: response.statusCode,\n statusText: response.statusMessage || \"\",\n data: response.body,\n config: response.request.options,\n request: response.request,\n response,\n headers: response.headers,\n };\n}\n\n/**\n * got supports only - string | number | boolean | null | undefined as searchParam value,\n * so if we have bigint type, convert it to string\n */\nfunction convertBigIntToString(obj: any): any {\n const result: any = {};\n if (!obj) return result;\n\n Object.entries(obj).forEach(([key, value]) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof value === \"bigint\") {\n result[key] = String(value);\n } else {\n result[key] = value;\n }\n }\n });\n\n return result;\n}\n","interface Cookie {\n name: string;\n value: string;\n expires?: Date;\n path?: string;\n sameSite?: \"Lax\" | \"None\" | \"Strict\";\n secure?: boolean;\n}\n\nexport class CookieJar {\n constructor(private jar = new Map<string, Cookie[]>()) {}\n\n setCookie(url: URL, cookieStr: string) {\n const key = url.origin.toLowerCase();\n if (!this.jar.has(key)) {\n this.jar.set(key, []);\n }\n\n const cookie = CookieJar.parse(cookieStr);\n this.jar.set(key, [\n ...(this.jar.get(key)?.filter((c) => c.name !== cookie.name) || []),\n cookie,\n ]);\n }\n\n getCookies(url: URL): Cookie[] {\n const key = url.origin.toLowerCase();\n if (!this.jar.get(key)) {\n return [];\n }\n\n // Filter out expired cookies\n return (\n this.jar\n .get(key)\n ?.filter((cookie) => !cookie.expires || cookie.expires > new Date()) ||\n []\n );\n }\n\n static parse(str: string): Cookie {\n if (typeof str !== \"string\") {\n throw new Error(\"argument str must be a string\");\n }\n\n const parts = str.split(\";\").map((part) => part.trim());\n\n let cookie: Cookie;\n\n if (parts.length > 0) {\n const [name, value] = parts[0].split(\"=\");\n if (!name || !value) {\n throw new Error(\"Invalid cookie\");\n }\n\n cookie = {\n name,\n value,\n };\n } else {\n throw new Error(\"Invalid cookie\");\n }\n\n parts.slice(1).forEach((part) => {\n const [name, value] = part.split(\"=\");\n if (!name.trim()) {\n throw new Error(\"Invalid cookie\");\n }\n\n const nameLow = name.toLowerCase();\n const val =\n // eslint-disable-next-line quotes\n value?.charAt(0) === \"'\" || value?.charAt(0) === '\"'\n ? value?.slice(1, -1)\n : value;\n if (nameLow === \"expires\") {\n cookie.expires = new Date(val);\n }\n if (nameLow === \"path\") {\n cookie.path = val;\n }\n if (nameLow === \"samesite\") {\n if (val !== \"Lax\" && val !== \"None\" && val !== \"Strict\") {\n throw new Error(\"Invalid cookie SameSite value\");\n }\n cookie.sameSite = val;\n }\n if (nameLow === \"secure\") {\n cookie.secure = true;\n }\n });\n\n return cookie;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKO;;;ACIA,IAAM,YAAN,MAAM,WAAU;AAAA,EACrB,YAAoB,MAAM,oBAAI,IAAsB,GAAG;AAAnC;AAAA,EAAoC;AAAA,EAExD,UAAU,KAAU,WAAmB;AAZzC;AAaI,UAAM,MAAM,IAAI,OAAO,YAAY;AACnC,QAAI,CAAC,KAAK,IAAI,IAAI,GAAG,GAAG;AACtB,WAAK,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,IACtB;AAEA,UAAM,SAAS,WAAU,MAAM,SAAS;AACxC,SAAK,IAAI,IAAI,KAAK;AAAA,MAChB,KAAI,UAAK,IAAI,IAAI,GAAG,MAAhB,mBAAmB,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,UAAS,CAAC;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,KAAoB;AAzBjC;AA0BI,UAAM,MAAM,IAAI,OAAO,YAAY;AACnC,QAAI,CAAC,KAAK,IAAI,IAAI,GAAG,GAAG;AACtB,aAAO,CAAC;AAAA,IACV;AAGA,aACE,UAAK,IACF,IAAI,GAAG,MADV,mBAEI,OAAO,CAAC,WAAW,CAAC,OAAO,WAAW,OAAO,UAAU,oBAAI,KAAK,OACpE,CAAC;AAAA,EAEL;AAAA,EAEA,OAAO,MAAM,KAAqB;AAChC,QAAI,OAAO,QAAQ,UAAU;AAC3B,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,UAAM,QAAQ,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAEtD,QAAI;AAEJ,QAAI,MAAM,SAAS,GAAG;AACpB,YAAM,CAAC,MAAM,KAAK,IAAI,MAAM,CAAC,EAAE,MAAM,GAAG;AACxC,UAAI,CAAC,QAAQ,CAAC,OAAO;AACnB,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAClC;AAEA,eAAS;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAClC;AAEA,UAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS;AAC/B,YAAM,CAAC,MAAM,KAAK,IAAI,KAAK,MAAM,GAAG;AACpC,UAAI,CAAC,KAAK,KAAK,GAAG;AAChB,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAClC;AAEA,YAAM,UAAU,KAAK,YAAY;AACjC,YAAM;AAAA;AAAA,SAEJ,+BAAO,OAAO,QAAO,QAAO,+BAAO,OAAO,QAAO,MAC7C,+BAAO,MAAM,GAAG,MAChB;AAAA;AACN,UAAI,YAAY,WAAW;AACzB,eAAO,UAAU,IAAI,KAAK,GAAG;AAAA,MAC/B;AACA,UAAI,YAAY,QAAQ;AACtB,eAAO,OAAO;AAAA,MAChB;AACA,UAAI,YAAY,YAAY;AAC1B,YAAI,QAAQ,SAAS,QAAQ,UAAU,QAAQ,UAAU;AACvD,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QACjD;AACA,eAAO,WAAW;AAAA,MACpB;AACA,UAAI,YAAY,UAAU;AACxB,eAAO,SAAS;AAAA,MAClB;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AACF;;;ADrFA,IAAM,YAAY,IAAI,UAAU;AAMhC,eAAO,YACL,gBACmC;AACnC,SAAO,YAAiB,cAAc;AACxC;AAEA,eAAsB,YACpB,gBACmC;AACnC,QAAM,EAAE,QAAQ,QAAQ,KAAK,SAAS,KAAK,IAAI;AAE/C,QAAM,UAAqC;AAAA,IACzC,OAAO;AAAA,IACP,cAAc,sBAAsB,MAAM;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,eAAe;AAAA,QACb,CAAC,YAAY;AACX,gBAAM,UAAU,UAAU,WAAW,IAAI,IAAI,QAAQ,GAAI,CAAC;AAE1D,eAAI,mCAAS,UAAS,KAAK,QAAQ,SAAS;AAE1C,oBAAQ,QAAQ,SAAS,QACtB,IAAI,CAAC,WAAgB,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK,EAAE,EACrD,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,CAAC,aAAa;AACZ,cAAI,MAAM,QAAQ,SAAS,QAAQ,YAAY,CAAC,GAAG;AACjD,qBAAS,QAAQ,YAAY,EAAE,QAAQ,CAAC,MAAM;AAC5C,wBAAU,UAAU,IAAI,IAAI,SAAS,GAAI,GAAG,CAAC;AAAA,YAC/C,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM;AACR,QAAI,gBAAgB,YAAY;AAC9B,cAAQ,OAAO,OAAO,KAAK,IAAI;AAAA,IACjC,OAAO;AACL,cAAQ,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AAEA,MAAI;AACF,UAAM,WAAW,UAAM,WAAAA,SAAS,OAAO;AACvC,WAAO,cAAmB,QAAQ;AAAA,EACpC,SAAS,OAAO;AACd,UAAM,WAAW;AACjB,QAAI,SAAS,UAAU;AACrB,aAAO,cAAmB,SAAS,QAAyB;AAAA,IAC9D;AACA,UAAM;AAAA,EACR;AACF;AAEA,SAAS,cAAmB,UAAmD;AAC7E,SAAO;AAAA,IACL,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS,iBAAiB;AAAA,IACtC,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS,QAAQ;AAAA,IACzB,SAAS,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,SAAS;AAAA,EACpB;AACF;AAMA,SAAS,sBAAsB,KAAe;AAC5C,QAAM,SAAc,CAAC;AACrB,MAAI,CAAC,IAAK,QAAO;AAEjB,SAAO,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5C,QAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAClD,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO,GAAG,IAAI,OAAO,KAAK;AAAA,MAC5B,OAAO;AACL,eAAO,GAAG,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":["got"]}
{"version":3,"sources":["../../src/index.node.ts","../../src/cookieJar.ts"],"sourcesContent":["import got, {\n OptionsOfBufferResponseBody,\n OptionsOfJSONResponseBody,\n RequestError,\n Response,\n} from \"got\";\nimport { CookieJar } from \"./cookieJar\";\nimport { AptosClientRequest, AptosClientResponse } from \"./types\";\n\nconst cookieJar = new CookieJar();\n\n/**\n * Used for JSON responses\n * @param requestOptions\n */\nexport default async function aptosClient<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(requestOptions);\n}\n\nexport async function jsonRequest<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { params, method, url, headers, body } = requestOptions;\n\n const request: OptionsOfJSONResponseBody = {\n http2: true,\n searchParams: convertBigIntToString(params),\n method,\n url,\n responseType: \"json\",\n headers,\n hooks: {\n beforeRequest: [\n (options) => {\n const cookies = cookieJar.getCookies(new URL(options.url!));\n\n if (cookies?.length > 0 && options.headers) {\n /* eslint-disable no-param-reassign */\n options.headers.cookie = cookies\n .map((cookie: any) => `${cookie.name}=${cookie.value}`)\n .join(\"; \");\n }\n },\n ],\n afterResponse: [\n (response) => {\n if (Array.isArray(response.headers[\"set-cookie\"])) {\n response.headers[\"set-cookie\"].forEach((c) => {\n cookieJar.setCookie(new URL(response.url!), c);\n });\n }\n return response;\n },\n ],\n },\n };\n\n if (body) {\n if (body instanceof Uint8Array) {\n request.body = Buffer.from(body);\n } else {\n request.body = Buffer.from(JSON.stringify(body));\n }\n }\n\n try {\n const response = await got<Res>(request);\n return parseResponse<Res>(response);\n } catch (error) {\n const gotError = error as RequestError;\n if (gotError.response) {\n return parseResponse<Res>(gotError.response as Response<Res>);\n }\n throw error;\n }\n}\n\n/**\n * Used for binary responses, such as BCS outputs\n *\n * @experimental\n * @param requestOptions\n */\nexport async function bcsRequest(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Buffer>> {\n const { params, method, url, headers, body } = requestOptions;\n\n const request: OptionsOfBufferResponseBody = {\n http2: true,\n searchParams: convertBigIntToString(params),\n method,\n url,\n responseType: \"buffer\",\n headers,\n hooks: {\n beforeRequest: [\n (options) => {\n const cookies = cookieJar.getCookies(new URL(options.url!));\n\n if (cookies?.length > 0 && options.headers) {\n /* eslint-disable no-param-reassign */\n options.headers.cookie = cookies\n .map((cookie: any) => `${cookie.name}=${cookie.value}`)\n .join(\"; \");\n }\n },\n ],\n afterResponse: [\n (response) => {\n if (Array.isArray(response.headers[\"set-cookie\"])) {\n response.headers[\"set-cookie\"].forEach((c) => {\n cookieJar.setCookie(new URL(response.url!), c);\n });\n }\n return response;\n },\n ],\n },\n };\n\n if (body) {\n if (body instanceof Uint8Array) {\n request.body = Buffer.from(body);\n } else {\n request.body = Buffer.from(JSON.stringify(body));\n }\n }\n\n try {\n switch (method) {\n case \"GET\":\n return parseResponse<Buffer>(await got.get(request));\n case \"POST\":\n return parseResponse<Buffer>(await got.post(request));\n default:\n // Do nothing, fall through\n }\n } catch (error) {\n const gotError = error as RequestError;\n if (gotError.response) {\n return parseResponse<Buffer>(gotError.response as Response<Buffer>);\n }\n throw error;\n }\n\n throw new Error(`Unsupported method: ${method}`);\n}\n\nfunction parseResponse<Res>(response: Response<Res>): AptosClientResponse<Res> {\n return {\n status: response.statusCode,\n statusText: response.statusMessage || \"\",\n data: response.body,\n config: response.request.options,\n request: response.request,\n response,\n headers: response.headers,\n };\n}\n\n/**\n * got supports only - string | number | boolean | null | undefined as searchParam value,\n * so if we have bigint type, convert it to string\n */\nfunction convertBigIntToString(obj: any): any {\n const result: any = {};\n if (!obj) return result;\n\n Object.entries(obj).forEach(([key, value]) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof value === \"bigint\") {\n result[key] = String(value);\n } else {\n result[key] = value;\n }\n }\n });\n\n return result;\n}\n","interface Cookie {\n name: string;\n value: string;\n expires?: Date;\n path?: string;\n sameSite?: \"Lax\" | \"None\" | \"Strict\";\n secure?: boolean;\n}\n\nexport class CookieJar {\n constructor(private jar = new Map<string, Cookie[]>()) {}\n\n setCookie(url: URL, cookieStr: string) {\n const key = url.origin.toLowerCase();\n if (!this.jar.has(key)) {\n this.jar.set(key, []);\n }\n\n const cookie = CookieJar.parse(cookieStr);\n this.jar.set(key, [\n ...(this.jar.get(key)?.filter((c) => c.name !== cookie.name) || []),\n cookie,\n ]);\n }\n\n getCookies(url: URL): Cookie[] {\n const key = url.origin.toLowerCase();\n if (!this.jar.get(key)) {\n return [];\n }\n\n // Filter out expired cookies\n return (\n this.jar\n .get(key)\n ?.filter((cookie) => !cookie.expires || cookie.expires > new Date()) ||\n []\n );\n }\n\n static parse(str: string): Cookie {\n if (typeof str !== \"string\") {\n throw new Error(\"argument str must be a string\");\n }\n\n const parts = str.split(\";\").map((part) => part.trim());\n\n let cookie: Cookie;\n\n if (parts.length > 0) {\n const [name, value] = parts[0].split(\"=\");\n if (!name || !value) {\n throw new Error(\"Invalid cookie\");\n }\n\n cookie = {\n name,\n value,\n };\n } else {\n throw new Error(\"Invalid cookie\");\n }\n\n parts.slice(1).forEach((part) => {\n const [name, value] = part.split(\"=\");\n if (!name.trim()) {\n throw new Error(\"Invalid cookie\");\n }\n\n const nameLow = name.toLowerCase();\n const val =\n // eslint-disable-next-line quotes\n value?.charAt(0) === \"'\" || value?.charAt(0) === '\"'\n ? value?.slice(1, -1)\n : value;\n if (nameLow === \"expires\") {\n cookie.expires = new Date(val);\n }\n if (nameLow === \"path\") {\n cookie.path = val;\n }\n if (nameLow === \"samesite\") {\n if (val !== \"Lax\" && val !== \"None\" && val !== \"Strict\") {\n throw new Error(\"Invalid cookie SameSite value\");\n }\n cookie.sameSite = val;\n }\n if (nameLow === \"secure\") {\n cookie.secure = true;\n }\n });\n\n return cookie;\n }\n}\n"],"mappings":"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","names":["got"]}

@@ -130,2 +130,56 @@ // src/index.node.ts

}
async function bcsRequest(requestOptions) {
const { params, method, url, headers, body } = requestOptions;
const request = {
http2: true,
searchParams: convertBigIntToString(params),
method,
url,
responseType: "buffer",
headers,
hooks: {
beforeRequest: [
(options) => {
const cookies = cookieJar.getCookies(new URL(options.url));
if ((cookies == null ? void 0 : cookies.length) > 0 && options.headers) {
options.headers.cookie = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join("; ");
}
}
],
afterResponse: [
(response) => {
if (Array.isArray(response.headers["set-cookie"])) {
response.headers["set-cookie"].forEach((c) => {
cookieJar.setCookie(new URL(response.url), c);
});
}
return response;
}
]
}
};
if (body) {
if (body instanceof Uint8Array) {
request.body = Buffer.from(body);
} else {
request.body = Buffer.from(JSON.stringify(body));
}
}
try {
switch (method) {
case "GET":
return parseResponse(await got.get(request));
case "POST":
return parseResponse(await got.post(request));
default:
}
} catch (error) {
const gotError = error;
if (gotError.response) {
return parseResponse(gotError.response);
}
throw error;
}
throw new Error(`Unsupported method: ${method}`);
}
function parseResponse(response) {

@@ -157,2 +211,3 @@ return {

export {
bcsRequest,
aptosClient as default,

@@ -159,0 +214,0 @@ jsonRequest

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

{"version":3,"sources":["../../src/index.node.ts","../../src/cookieJar.ts"],"sourcesContent":["import got, {\n OptionsOfBufferResponseBody,\n OptionsOfJSONResponseBody,\n RequestError,\n Response,\n} from \"got\";\nimport { CookieJar } from \"./cookieJar\";\nimport { AptosClientRequest, AptosClientResponse } from \"./types\";\n\nconst cookieJar = new CookieJar();\n\n/**\n * Used for JSON responses\n * @param requestOptions\n */\nexport default async function aptosClient<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(requestOptions);\n}\n\nexport async function jsonRequest<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { params, method, url, headers, body } = requestOptions;\n\n const request: OptionsOfJSONResponseBody = {\n http2: true,\n searchParams: convertBigIntToString(params),\n method,\n url,\n responseType: \"json\",\n headers,\n hooks: {\n beforeRequest: [\n (options) => {\n const cookies = cookieJar.getCookies(new URL(options.url!));\n\n if (cookies?.length > 0 && options.headers) {\n /* eslint-disable no-param-reassign */\n options.headers.cookie = cookies\n .map((cookie: any) => `${cookie.name}=${cookie.value}`)\n .join(\"; \");\n }\n },\n ],\n afterResponse: [\n (response) => {\n if (Array.isArray(response.headers[\"set-cookie\"])) {\n response.headers[\"set-cookie\"].forEach((c) => {\n cookieJar.setCookie(new URL(response.url!), c);\n });\n }\n return response;\n },\n ],\n },\n };\n\n if (body) {\n if (body instanceof Uint8Array) {\n request.body = Buffer.from(body);\n } else {\n request.body = Buffer.from(JSON.stringify(body));\n }\n }\n\n try {\n const response = await got<Res>(request);\n return parseResponse<Res>(response);\n } catch (error) {\n const gotError = error as RequestError;\n if (gotError.response) {\n return parseResponse<Res>(gotError.response as Response<Res>);\n }\n throw error;\n }\n}\n\nfunction parseResponse<Res>(response: Response<Res>): AptosClientResponse<Res> {\n return {\n status: response.statusCode,\n statusText: response.statusMessage || \"\",\n data: response.body,\n config: response.request.options,\n request: response.request,\n response,\n headers: response.headers,\n };\n}\n\n/**\n * got supports only - string | number | boolean | null | undefined as searchParam value,\n * so if we have bigint type, convert it to string\n */\nfunction convertBigIntToString(obj: any): any {\n const result: any = {};\n if (!obj) return result;\n\n Object.entries(obj).forEach(([key, value]) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof value === \"bigint\") {\n result[key] = String(value);\n } else {\n result[key] = value;\n }\n }\n });\n\n return result;\n}\n","interface Cookie {\n name: string;\n value: string;\n expires?: Date;\n path?: string;\n sameSite?: \"Lax\" | \"None\" | \"Strict\";\n secure?: boolean;\n}\n\nexport class CookieJar {\n constructor(private jar = new Map<string, Cookie[]>()) {}\n\n setCookie(url: URL, cookieStr: string) {\n const key = url.origin.toLowerCase();\n if (!this.jar.has(key)) {\n this.jar.set(key, []);\n }\n\n const cookie = CookieJar.parse(cookieStr);\n this.jar.set(key, [\n ...(this.jar.get(key)?.filter((c) => c.name !== cookie.name) || []),\n cookie,\n ]);\n }\n\n getCookies(url: URL): Cookie[] {\n const key = url.origin.toLowerCase();\n if (!this.jar.get(key)) {\n return [];\n }\n\n // Filter out expired cookies\n return (\n this.jar\n .get(key)\n ?.filter((cookie) => !cookie.expires || cookie.expires > new Date()) ||\n []\n );\n }\n\n static parse(str: string): Cookie {\n if (typeof str !== \"string\") {\n throw new Error(\"argument str must be a string\");\n }\n\n const parts = str.split(\";\").map((part) => part.trim());\n\n let cookie: Cookie;\n\n if (parts.length > 0) {\n const [name, value] = parts[0].split(\"=\");\n if (!name || !value) {\n throw new Error(\"Invalid cookie\");\n }\n\n cookie = {\n name,\n value,\n };\n } else {\n throw new Error(\"Invalid cookie\");\n }\n\n parts.slice(1).forEach((part) => {\n const [name, value] = part.split(\"=\");\n if (!name.trim()) {\n throw new Error(\"Invalid cookie\");\n }\n\n const nameLow = name.toLowerCase();\n const val =\n // eslint-disable-next-line quotes\n value?.charAt(0) === \"'\" || value?.charAt(0) === '\"'\n ? value?.slice(1, -1)\n : value;\n if (nameLow === \"expires\") {\n cookie.expires = new Date(val);\n }\n if (nameLow === \"path\") {\n cookie.path = val;\n }\n if (nameLow === \"samesite\") {\n if (val !== \"Lax\" && val !== \"None\" && val !== \"Strict\") {\n throw new Error(\"Invalid cookie SameSite value\");\n }\n cookie.sameSite = val;\n }\n if (nameLow === \"secure\") {\n cookie.secure = true;\n }\n });\n\n return cookie;\n }\n}\n"],"mappings":"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","names":[]}
{"version":3,"sources":["../../src/index.node.ts","../../src/cookieJar.ts"],"sourcesContent":["import got, {\n OptionsOfBufferResponseBody,\n OptionsOfJSONResponseBody,\n RequestError,\n Response,\n} from \"got\";\nimport { CookieJar } from \"./cookieJar\";\nimport { AptosClientRequest, AptosClientResponse } from \"./types\";\n\nconst cookieJar = new CookieJar();\n\n/**\n * Used for JSON responses\n * @param requestOptions\n */\nexport default async function aptosClient<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n return jsonRequest<Res>(requestOptions);\n}\n\nexport async function jsonRequest<Res>(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Res>> {\n const { params, method, url, headers, body } = requestOptions;\n\n const request: OptionsOfJSONResponseBody = {\n http2: true,\n searchParams: convertBigIntToString(params),\n method,\n url,\n responseType: \"json\",\n headers,\n hooks: {\n beforeRequest: [\n (options) => {\n const cookies = cookieJar.getCookies(new URL(options.url!));\n\n if (cookies?.length > 0 && options.headers) {\n /* eslint-disable no-param-reassign */\n options.headers.cookie = cookies\n .map((cookie: any) => `${cookie.name}=${cookie.value}`)\n .join(\"; \");\n }\n },\n ],\n afterResponse: [\n (response) => {\n if (Array.isArray(response.headers[\"set-cookie\"])) {\n response.headers[\"set-cookie\"].forEach((c) => {\n cookieJar.setCookie(new URL(response.url!), c);\n });\n }\n return response;\n },\n ],\n },\n };\n\n if (body) {\n if (body instanceof Uint8Array) {\n request.body = Buffer.from(body);\n } else {\n request.body = Buffer.from(JSON.stringify(body));\n }\n }\n\n try {\n const response = await got<Res>(request);\n return parseResponse<Res>(response);\n } catch (error) {\n const gotError = error as RequestError;\n if (gotError.response) {\n return parseResponse<Res>(gotError.response as Response<Res>);\n }\n throw error;\n }\n}\n\n/**\n * Used for binary responses, such as BCS outputs\n *\n * @experimental\n * @param requestOptions\n */\nexport async function bcsRequest(\n requestOptions: AptosClientRequest,\n): Promise<AptosClientResponse<Buffer>> {\n const { params, method, url, headers, body } = requestOptions;\n\n const request: OptionsOfBufferResponseBody = {\n http2: true,\n searchParams: convertBigIntToString(params),\n method,\n url,\n responseType: \"buffer\",\n headers,\n hooks: {\n beforeRequest: [\n (options) => {\n const cookies = cookieJar.getCookies(new URL(options.url!));\n\n if (cookies?.length > 0 && options.headers) {\n /* eslint-disable no-param-reassign */\n options.headers.cookie = cookies\n .map((cookie: any) => `${cookie.name}=${cookie.value}`)\n .join(\"; \");\n }\n },\n ],\n afterResponse: [\n (response) => {\n if (Array.isArray(response.headers[\"set-cookie\"])) {\n response.headers[\"set-cookie\"].forEach((c) => {\n cookieJar.setCookie(new URL(response.url!), c);\n });\n }\n return response;\n },\n ],\n },\n };\n\n if (body) {\n if (body instanceof Uint8Array) {\n request.body = Buffer.from(body);\n } else {\n request.body = Buffer.from(JSON.stringify(body));\n }\n }\n\n try {\n switch (method) {\n case \"GET\":\n return parseResponse<Buffer>(await got.get(request));\n case \"POST\":\n return parseResponse<Buffer>(await got.post(request));\n default:\n // Do nothing, fall through\n }\n } catch (error) {\n const gotError = error as RequestError;\n if (gotError.response) {\n return parseResponse<Buffer>(gotError.response as Response<Buffer>);\n }\n throw error;\n }\n\n throw new Error(`Unsupported method: ${method}`);\n}\n\nfunction parseResponse<Res>(response: Response<Res>): AptosClientResponse<Res> {\n return {\n status: response.statusCode,\n statusText: response.statusMessage || \"\",\n data: response.body,\n config: response.request.options,\n request: response.request,\n response,\n headers: response.headers,\n };\n}\n\n/**\n * got supports only - string | number | boolean | null | undefined as searchParam value,\n * so if we have bigint type, convert it to string\n */\nfunction convertBigIntToString(obj: any): any {\n const result: any = {};\n if (!obj) return result;\n\n Object.entries(obj).forEach(([key, value]) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof value === \"bigint\") {\n result[key] = String(value);\n } else {\n result[key] = value;\n }\n }\n });\n\n return result;\n}\n","interface Cookie {\n name: string;\n value: string;\n expires?: Date;\n path?: string;\n sameSite?: \"Lax\" | \"None\" | \"Strict\";\n secure?: boolean;\n}\n\nexport class CookieJar {\n constructor(private jar = new Map<string, Cookie[]>()) {}\n\n setCookie(url: URL, cookieStr: string) {\n const key = url.origin.toLowerCase();\n if (!this.jar.has(key)) {\n this.jar.set(key, []);\n }\n\n const cookie = CookieJar.parse(cookieStr);\n this.jar.set(key, [\n ...(this.jar.get(key)?.filter((c) => c.name !== cookie.name) || []),\n cookie,\n ]);\n }\n\n getCookies(url: URL): Cookie[] {\n const key = url.origin.toLowerCase();\n if (!this.jar.get(key)) {\n return [];\n }\n\n // Filter out expired cookies\n return (\n this.jar\n .get(key)\n ?.filter((cookie) => !cookie.expires || cookie.expires > new Date()) ||\n []\n );\n }\n\n static parse(str: string): Cookie {\n if (typeof str !== \"string\") {\n throw new Error(\"argument str must be a string\");\n }\n\n const parts = str.split(\";\").map((part) => part.trim());\n\n let cookie: Cookie;\n\n if (parts.length > 0) {\n const [name, value] = parts[0].split(\"=\");\n if (!name || !value) {\n throw new Error(\"Invalid cookie\");\n }\n\n cookie = {\n name,\n value,\n };\n } else {\n throw new Error(\"Invalid cookie\");\n }\n\n parts.slice(1).forEach((part) => {\n const [name, value] = part.split(\"=\");\n if (!name.trim()) {\n throw new Error(\"Invalid cookie\");\n }\n\n const nameLow = name.toLowerCase();\n const val =\n // eslint-disable-next-line quotes\n value?.charAt(0) === \"'\" || value?.charAt(0) === '\"'\n ? value?.slice(1, -1)\n : value;\n if (nameLow === \"expires\") {\n cookie.expires = new Date(val);\n }\n if (nameLow === \"path\") {\n cookie.path = val;\n }\n if (nameLow === \"samesite\") {\n if (val !== \"Lax\" && val !== \"None\" && val !== \"Strict\") {\n throw new Error(\"Invalid cookie SameSite value\");\n }\n cookie.sameSite = val;\n }\n if (nameLow === \"secure\") {\n cookie.secure = true;\n }\n });\n\n return cookie;\n }\n}\n"],"mappings":";AAAA,OAAO,SAKA;;;ACIA,IAAM,YAAN,MAAM,WAAU;AAAA,EACrB,YAAoB,MAAM,oBAAI,IAAsB,GAAG;AAAnC;AAAA,EAAoC;AAAA,EAExD,UAAU,KAAU,WAAmB;AAZzC;AAaI,UAAM,MAAM,IAAI,OAAO,YAAY;AACnC,QAAI,CAAC,KAAK,IAAI,IAAI,GAAG,GAAG;AACtB,WAAK,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,IACtB;AAEA,UAAM,SAAS,WAAU,MAAM,SAAS;AACxC,SAAK,IAAI,IAAI,KAAK;AAAA,MAChB,KAAI,UAAK,IAAI,IAAI,GAAG,MAAhB,mBAAmB,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,UAAS,CAAC;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,KAAoB;AAzBjC;AA0BI,UAAM,MAAM,IAAI,OAAO,YAAY;AACnC,QAAI,CAAC,KAAK,IAAI,IAAI,GAAG,GAAG;AACtB,aAAO,CAAC;AAAA,IACV;AAGA,aACE,UAAK,IACF,IAAI,GAAG,MADV,mBAEI,OAAO,CAAC,WAAW,CAAC,OAAO,WAAW,OAAO,UAAU,oBAAI,KAAK,OACpE,CAAC;AAAA,EAEL;AAAA,EAEA,OAAO,MAAM,KAAqB;AAChC,QAAI,OAAO,QAAQ,UAAU;AAC3B,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,UAAM,QAAQ,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAEtD,QAAI;AAEJ,QAAI,MAAM,SAAS,GAAG;AACpB,YAAM,CAAC,MAAM,KAAK,IAAI,MAAM,CAAC,EAAE,MAAM,GAAG;AACxC,UAAI,CAAC,QAAQ,CAAC,OAAO;AACnB,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAClC;AAEA,eAAS;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAClC;AAEA,UAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS;AAC/B,YAAM,CAAC,MAAM,KAAK,IAAI,KAAK,MAAM,GAAG;AACpC,UAAI,CAAC,KAAK,KAAK,GAAG;AAChB,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAClC;AAEA,YAAM,UAAU,KAAK,YAAY;AACjC,YAAM;AAAA;AAAA,SAEJ,+BAAO,OAAO,QAAO,QAAO,+BAAO,OAAO,QAAO,MAC7C,+BAAO,MAAM,GAAG,MAChB;AAAA;AACN,UAAI,YAAY,WAAW;AACzB,eAAO,UAAU,IAAI,KAAK,GAAG;AAAA,MAC/B;AACA,UAAI,YAAY,QAAQ;AACtB,eAAO,OAAO;AAAA,MAChB;AACA,UAAI,YAAY,YAAY;AAC1B,YAAI,QAAQ,SAAS,QAAQ,UAAU,QAAQ,UAAU;AACvD,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QACjD;AACA,eAAO,WAAW;AAAA,MACpB;AACA,UAAI,YAAY,UAAU;AACxB,eAAO,SAAS;AAAA,MAClB;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AACF;;;ADrFA,IAAM,YAAY,IAAI,UAAU;AAMhC,eAAO,YACL,gBACmC;AACnC,SAAO,YAAiB,cAAc;AACxC;AAEA,eAAsB,YACpB,gBACmC;AACnC,QAAM,EAAE,QAAQ,QAAQ,KAAK,SAAS,KAAK,IAAI;AAE/C,QAAM,UAAqC;AAAA,IACzC,OAAO;AAAA,IACP,cAAc,sBAAsB,MAAM;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,eAAe;AAAA,QACb,CAAC,YAAY;AACX,gBAAM,UAAU,UAAU,WAAW,IAAI,IAAI,QAAQ,GAAI,CAAC;AAE1D,eAAI,mCAAS,UAAS,KAAK,QAAQ,SAAS;AAE1C,oBAAQ,QAAQ,SAAS,QACtB,IAAI,CAAC,WAAgB,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK,EAAE,EACrD,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,CAAC,aAAa;AACZ,cAAI,MAAM,QAAQ,SAAS,QAAQ,YAAY,CAAC,GAAG;AACjD,qBAAS,QAAQ,YAAY,EAAE,QAAQ,CAAC,MAAM;AAC5C,wBAAU,UAAU,IAAI,IAAI,SAAS,GAAI,GAAG,CAAC;AAAA,YAC/C,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM;AACR,QAAI,gBAAgB,YAAY;AAC9B,cAAQ,OAAO,OAAO,KAAK,IAAI;AAAA,IACjC,OAAO;AACL,cAAQ,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,IAAS,OAAO;AACvC,WAAO,cAAmB,QAAQ;AAAA,EACpC,SAAS,OAAO;AACd,UAAM,WAAW;AACjB,QAAI,SAAS,UAAU;AACrB,aAAO,cAAmB,SAAS,QAAyB;AAAA,IAC9D;AACA,UAAM;AAAA,EACR;AACF;AAQA,eAAsB,WACpB,gBACsC;AACtC,QAAM,EAAE,QAAQ,QAAQ,KAAK,SAAS,KAAK,IAAI;AAE/C,QAAM,UAAuC;AAAA,IAC3C,OAAO;AAAA,IACP,cAAc,sBAAsB,MAAM;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,eAAe;AAAA,QACb,CAAC,YAAY;AACX,gBAAM,UAAU,UAAU,WAAW,IAAI,IAAI,QAAQ,GAAI,CAAC;AAE1D,eAAI,mCAAS,UAAS,KAAK,QAAQ,SAAS;AAE1C,oBAAQ,QAAQ,SAAS,QACtB,IAAI,CAAC,WAAgB,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK,EAAE,EACrD,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,CAAC,aAAa;AACZ,cAAI,MAAM,QAAQ,SAAS,QAAQ,YAAY,CAAC,GAAG;AACjD,qBAAS,QAAQ,YAAY,EAAE,QAAQ,CAAC,MAAM;AAC5C,wBAAU,UAAU,IAAI,IAAI,SAAS,GAAI,GAAG,CAAC;AAAA,YAC/C,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM;AACR,QAAI,gBAAgB,YAAY;AAC9B,cAAQ,OAAO,OAAO,KAAK,IAAI;AAAA,IACjC,OAAO;AACL,cAAQ,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AAEA,MAAI;AACF,YAAQ,QAAQ;AAAA,MACd,KAAK;AACH,eAAO,cAAsB,MAAM,IAAI,IAAI,OAAO,CAAC;AAAA,MACrD,KAAK;AACH,eAAO,cAAsB,MAAM,IAAI,KAAK,OAAO,CAAC;AAAA,MACtD;AAAA,IAEF;AAAA,EACF,SAAS,OAAO;AACd,UAAM,WAAW;AACjB,QAAI,SAAS,UAAU;AACrB,aAAO,cAAsB,SAAS,QAA4B;AAAA,IACpE;AACA,UAAM;AAAA,EACR;AAEA,QAAM,IAAI,MAAM,uBAAuB,MAAM,EAAE;AACjD;AAEA,SAAS,cAAmB,UAAmD;AAC7E,SAAO;AAAA,IACL,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS,iBAAiB;AAAA,IACtC,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS,QAAQ;AAAA,IACzB,SAAS,SAAS;AAAA,IAClB;AAAA,IACA,SAAS,SAAS;AAAA,EACpB;AACF;AAMA,SAAS,sBAAsB,KAAe;AAC5C,QAAM,SAAc,CAAC;AACrB,MAAI,CAAC,IAAK,QAAO;AAEjB,SAAO,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5C,QAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAClD,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO,GAAG,IAAI,OAAO,KAAK;AAAA,MAC5B,OAAO;AACL,eAAO,GAAG,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}

@@ -8,1 +8,8 @@ import { AptosClientRequest, AptosClientResponse } from "./types";

export declare function jsonRequest<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
/**
* Used for binary responses, such as BCS outputs
*
* @experimental
* @param requestOptions
*/
export declare function bcsRequest(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;

@@ -41,2 +41,3 @@ "use strict";

exports.jsonRequest = jsonRequest;
exports.bcsRequest = bcsRequest;
var got_1 = require("got");

@@ -121,2 +122,84 @@ var cookieJar_1 = require("./cookieJar");

}
/**
* Used for binary responses, such as BCS outputs
*
* @experimental
* @param requestOptions
*/
function bcsRequest(requestOptions) {
return __awaiter(this, void 0, void 0, function () {
var params, method, url, headers, body, request, _a, _b, _c, error_2, gotError;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
params = requestOptions.params, method = requestOptions.method, url = requestOptions.url, headers = requestOptions.headers, body = requestOptions.body;
request = {
http2: true,
searchParams: convertBigIntToString(params),
method: method,
url: url,
responseType: "buffer",
headers: headers,
hooks: {
beforeRequest: [
function (options) {
var cookies = cookieJar.getCookies(new URL(options.url));
if ((cookies === null || cookies === void 0 ? void 0 : cookies.length) > 0 && options.headers) {
/* eslint-disable no-param-reassign */
options.headers.cookie = cookies
.map(function (cookie) { return "".concat(cookie.name, "=").concat(cookie.value); })
.join("; ");
}
},
],
afterResponse: [
function (response) {
if (Array.isArray(response.headers["set-cookie"])) {
response.headers["set-cookie"].forEach(function (c) {
cookieJar.setCookie(new URL(response.url), c);
});
}
return response;
},
],
},
};
if (body) {
if (body instanceof Uint8Array) {
request.body = Buffer.from(body);
}
else {
request.body = Buffer.from(JSON.stringify(body));
}
}
_d.label = 1;
case 1:
_d.trys.push([1, 7, , 8]);
_a = method;
switch (_a) {
case "GET": return [3 /*break*/, 2];
case "POST": return [3 /*break*/, 4];
}
return [3 /*break*/, 6];
case 2:
_b = parseResponse;
return [4 /*yield*/, got_1.default.get(request)];
case 3: return [2 /*return*/, _b.apply(void 0, [_d.sent()])];
case 4:
_c = parseResponse;
return [4 /*yield*/, got_1.default.post(request)];
case 5: return [2 /*return*/, _c.apply(void 0, [_d.sent()])];
case 6: return [3 /*break*/, 8];
case 7:
error_2 = _d.sent();
gotError = error_2;
if (gotError.response) {
return [2 /*return*/, parseResponse(gotError.response)];
}
throw error_2;
case 8: throw new Error("Unsupported method: ".concat(method));
}
});
});
}
function parseResponse(response) {

@@ -123,0 +206,0 @@ return {

{
"name": "@aptos-labs/aptos-client",
"description": "Client package for accessing the Aptos network API.",
"packageManager": "pnpm@8.3.1",
"packageManager": "pnpm@10.10.0",
"license": "Apache-2.0",
"engines": {
"node": ">=15.10.0"
"node": ">=20.0.0"
},

@@ -56,3 +56,2 @@ "exports": {

"peerDependencies": {
"axios": "^1.8.4",
"got": "^11.8.6"

@@ -75,3 +74,3 @@ },

},
"version": "1.2.0"
"version": "2.0.0"
}

@@ -15,3 +15,3 @@ ![License][github-license]

1. [axios](https://github.com/axios/axios) - implemented in `index.browser.ts` to use in `browser` environment (in a browser env it is up to the browser and the server to negotiate http2 connection)
1. [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) - implemented in `index.browser.ts` to use in `browser` environment (in a browser env it is up to the browser and the server to negotiate http2 connection)
2. [got](https://github.com/sindresorhus/got) - implemented in `index.node.ts` to use in `node` environment (to support http2 in node environment, still the server must support http2 also)

@@ -18,0 +18,0 @@