@aptos-labs/aptos-client
Advanced tools
@@ -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 }; |
| "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":"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","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":"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","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 { |
+3
-4
| { | ||
| "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" | ||
| } |
+1
-1
@@ -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 @@ |
Network access
Supply chain riskThis module accesses the network.
85012
30.32%1
-50%1046
33.08%4
Infinity%