@aptos-labs/aptos-client 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ ![License][github-license]
2
+ [![NPM Package Version][npm-image-version]][npm-url]
3
+ ![Node Version](https://img.shields.io/node/v/%40aptos-labs%2Faptos-client)
4
+ ![NPM bundle size](https://img.shields.io/bundlephobia/min/%40aptos-labs/aptos-client)
5
+ [![NPM Package Downloads][npm-image-downloads]][npm-url]
6
+
1
7
  # @aptos-labs/aptos-client
2
8
 
3
9
  This package implements a client with which you can interact with the Aptos network. It can be used standalone, and it is the client package used by the Aptos TypeScript SDK.
@@ -55,3 +61,8 @@ const response = await aptosClient<Res>({
55
61
  });
56
62
  return response;
57
63
  ```
64
+
65
+ [npm-image-version]: https://img.shields.io/npm/v/%40aptos-labs%2Faptos-client.svg
66
+ [npm-image-downloads]: https://img.shields.io/npm/dm/%40aptos-labs%2Faptos-client.svg
67
+ [npm-url]: https://npmjs.org/package/@aptos-labs/aptos-client
68
+ [github-license]: https://img.shields.io/github/license/aptos-labs/aptos-client
@@ -23,12 +23,5 @@ type AptosClientRequest = {
23
23
  */
24
24
  declare function aptosClient<Res>(options: AptosClientRequest): Promise<AptosClientResponse<Res>>;
25
25
  declare function jsonRequest<Res>(options: AptosClientRequest): Promise<AptosClientResponse<Res>>;
26
- /**
27
- * Used for binary responses, such as BCS outputs
28
- *
29
- * @experimental
30
- * @param options
31
- */
32
- declare function bcsRequest(options: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
33
26
 
34
- export { bcsRequest, aptosClient as default, jsonRequest };
27
+ export { aptosClient as default, jsonRequest };
@@ -23,12 +23,5 @@ type AptosClientRequest = {
23
23
  */
24
24
  declare function aptosClient<Res>(options: AptosClientRequest): Promise<AptosClientResponse<Res>>;
25
25
  declare function jsonRequest<Res>(options: AptosClientRequest): Promise<AptosClientResponse<Res>>;
26
- /**
27
- * Used for binary responses, such as BCS outputs
28
- *
29
- * @experimental
30
- * @param options
31
- */
32
- declare function bcsRequest(options: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
33
26
 
34
- export { bcsRequest, aptosClient as default, jsonRequest };
27
+ export { aptosClient as default, jsonRequest };
@@ -30,7 +30,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.browser.ts
31
31
  var index_browser_exports = {};
32
32
  __export(index_browser_exports, {
33
- bcsRequest: () => bcsRequest,
34
33
  default: () => aptosClient,
35
34
  jsonRequest: () => jsonRequest
36
35
  });
@@ -67,37 +66,8 @@ async function jsonRequest(options) {
67
66
  throw error;
68
67
  }
69
68
  }
70
- async function bcsRequest(options) {
71
- var _a;
72
- const { params, method, url, headers, body, overrides } = options;
73
- const requestConfig = {
74
- headers,
75
- method,
76
- url,
77
- params,
78
- data: body,
79
- withCredentials: (_a = overrides == null ? void 0 : overrides.WITH_CREDENTIALS) != null ? _a : true
80
- };
81
- try {
82
- const response = await (0, import_axios.default)(requestConfig);
83
- return {
84
- status: response.status,
85
- statusText: response.statusText,
86
- data: response.data,
87
- headers: response.headers,
88
- config: response.config
89
- };
90
- } catch (error) {
91
- const axiosError = error;
92
- if (axiosError.response) {
93
- return axiosError.response;
94
- }
95
- throw error;
96
- }
97
- }
98
69
  // Annotate the CommonJS export names for ESM import in node:
99
70
  0 && (module.exports = {
100
- bcsRequest,
101
71
  jsonRequest
102
72
  });
103
73
  //# sourceMappingURL=index.browser.js.map
@@ -1 +1 @@
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\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<Buffer>> {\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<Buffer>;\n if (axiosError.response) {\n return axiosError.response;\n }\n throw error;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsD;AAQtD,eAAO,YACL,SACmC;AACnC,SAAO,YAAiB,OAAO;AACjC;AAEA,eAAsB,YAClB,SACiC;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;AASA,eAAsB,WACpB,SACsC;AAtDxC;AAuDE,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"]}
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"]}
@@ -31,36 +31,7 @@ async function jsonRequest(options) {
31
31
  throw error;
32
32
  }
33
33
  }
34
- async function bcsRequest(options) {
35
- var _a;
36
- const { params, method, url, headers, body, overrides } = options;
37
- const requestConfig = {
38
- headers,
39
- method,
40
- url,
41
- params,
42
- data: body,
43
- withCredentials: (_a = overrides == null ? void 0 : overrides.WITH_CREDENTIALS) != null ? _a : true
44
- };
45
- try {
46
- const response = await axios(requestConfig);
47
- return {
48
- status: response.status,
49
- statusText: response.statusText,
50
- data: response.data,
51
- headers: response.headers,
52
- config: response.config
53
- };
54
- } catch (error) {
55
- const axiosError = error;
56
- if (axiosError.response) {
57
- return axiosError.response;
58
- }
59
- throw error;
60
- }
61
- }
62
34
  export {
63
- bcsRequest,
64
35
  aptosClient as default,
65
36
  jsonRequest
66
37
  };
@@ -1 +1 @@
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\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<Buffer>> {\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<Buffer>;\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,YAClB,SACiC;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;AASA,eAAsB,WACpB,SACsC;AAtDxC;AAuDE,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":[]}
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":[]}
@@ -22,12 +22,5 @@ type AptosClientRequest = {
22
22
  */
23
23
  declare function aptosClient<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
24
24
  declare function jsonRequest<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
25
- /**
26
- * Used for binary responses, such as BCS outputs
27
- *
28
- * @experimental
29
- * @param requestOptions
30
- */
31
- declare function bcsRequest(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
32
25
 
33
- export { bcsRequest, aptosClient as default, jsonRequest };
26
+ export { aptosClient as default, jsonRequest };
@@ -22,12 +22,5 @@ type AptosClientRequest = {
22
22
  */
23
23
  declare function aptosClient<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
24
24
  declare function jsonRequest<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
25
- /**
26
- * Used for binary responses, such as BCS outputs
27
- *
28
- * @experimental
29
- * @param requestOptions
30
- */
31
- declare function bcsRequest(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
32
25
 
33
- export { bcsRequest, aptosClient as default, jsonRequest };
26
+ export { aptosClient as default, jsonRequest };
@@ -30,7 +30,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.node.ts
31
31
  var index_node_exports = {};
32
32
  __export(index_node_exports, {
33
- bcsRequest: () => bcsRequest,
34
33
  default: () => aptosClient,
35
34
  jsonRequest: () => jsonRequest
36
35
  });
@@ -163,60 +162,6 @@ async function jsonRequest(requestOptions) {
163
162
  throw error;
164
163
  }
165
164
  }
166
- async function bcsRequest(requestOptions) {
167
- const { params, method, url, headers, body } = requestOptions;
168
- const request = {
169
- http2: true,
170
- searchParams: convertBigIntToString(params),
171
- method,
172
- url,
173
- responseType: "buffer",
174
- headers,
175
- hooks: {
176
- beforeRequest: [
177
- (options) => {
178
- const cookies = cookieJar.getCookies(new URL(options.url));
179
- if ((cookies == null ? void 0 : cookies.length) > 0 && options.headers) {
180
- options.headers.cookie = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join("; ");
181
- }
182
- }
183
- ],
184
- afterResponse: [
185
- (response) => {
186
- if (Array.isArray(response.headers["set-cookie"])) {
187
- response.headers["set-cookie"].forEach((c) => {
188
- cookieJar.setCookie(new URL(response.url), c);
189
- });
190
- }
191
- return response;
192
- }
193
- ]
194
- }
195
- };
196
- if (body) {
197
- if (body instanceof Uint8Array) {
198
- request.body = Buffer.from(body);
199
- } else {
200
- request.body = Buffer.from(JSON.stringify(body));
201
- }
202
- }
203
- try {
204
- switch (method) {
205
- case "GET":
206
- return parseResponse(await import_got.default.get(request));
207
- case "POST":
208
- return parseResponse(await import_got.default.post(request));
209
- default:
210
- }
211
- } catch (error) {
212
- const gotError = error;
213
- if (gotError.response) {
214
- return parseResponse(gotError.response);
215
- }
216
- throw error;
217
- }
218
- throw new Error(`Unsupported method: ${method}`);
219
- }
220
165
  function parseResponse(response) {
221
166
  return {
222
167
  status: response.statusCode,
@@ -244,7 +189,6 @@ function convertBigIntToString(obj) {
244
189
  }
245
190
  // Annotate the CommonJS export names for ESM import in node:
246
191
  0 && (module.exports = {
247
- bcsRequest,
248
192
  jsonRequest
249
193
  });
250
194
  //# sourceMappingURL=index.node.js.map
@@ -1 +1 @@
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\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"]}
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"]}
@@ -127,60 +127,6 @@ async function jsonRequest(requestOptions) {
127
127
  throw error;
128
128
  }
129
129
  }
130
- async function bcsRequest(requestOptions) {
131
- const { params, method, url, headers, body } = requestOptions;
132
- const request = {
133
- http2: true,
134
- searchParams: convertBigIntToString(params),
135
- method,
136
- url,
137
- responseType: "buffer",
138
- headers,
139
- hooks: {
140
- beforeRequest: [
141
- (options) => {
142
- const cookies = cookieJar.getCookies(new URL(options.url));
143
- if ((cookies == null ? void 0 : cookies.length) > 0 && options.headers) {
144
- options.headers.cookie = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join("; ");
145
- }
146
- }
147
- ],
148
- afterResponse: [
149
- (response) => {
150
- if (Array.isArray(response.headers["set-cookie"])) {
151
- response.headers["set-cookie"].forEach((c) => {
152
- cookieJar.setCookie(new URL(response.url), c);
153
- });
154
- }
155
- return response;
156
- }
157
- ]
158
- }
159
- };
160
- if (body) {
161
- if (body instanceof Uint8Array) {
162
- request.body = Buffer.from(body);
163
- } else {
164
- request.body = Buffer.from(JSON.stringify(body));
165
- }
166
- }
167
- try {
168
- switch (method) {
169
- case "GET":
170
- return parseResponse(await got.get(request));
171
- case "POST":
172
- return parseResponse(await got.post(request));
173
- default:
174
- }
175
- } catch (error) {
176
- const gotError = error;
177
- if (gotError.response) {
178
- return parseResponse(gotError.response);
179
- }
180
- throw error;
181
- }
182
- throw new Error(`Unsupported method: ${method}`);
183
- }
184
130
  function parseResponse(response) {
185
131
  return {
186
132
  status: response.statusCode,
@@ -207,7 +153,6 @@ function convertBigIntToString(obj) {
207
153
  return result;
208
154
  }
209
155
  export {
210
- bcsRequest,
211
156
  aptosClient as default,
212
157
  jsonRequest
213
158
  };
@@ -1 +1 @@
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\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":[]}
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":[]}
@@ -5,10 +5,3 @@ import { AptosClientRequest, AptosClientResponse } from "./types";
5
5
  */
6
6
  export default function aptosClient<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
7
7
  export declare function jsonRequest<Res>(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Res>>;
8
- /**
9
- * Used for binary responses, such as BCS outputs
10
- *
11
- * @experimental
12
- * @param requestOptions
13
- */
14
- export declare function bcsRequest(requestOptions: AptosClientRequest): Promise<AptosClientResponse<Buffer>>;
@@ -38,7 +38,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.default = aptosClient;
40
40
  exports.jsonRequest = jsonRequest;
41
- exports.bcsRequest = bcsRequest;
42
41
  var got_1 = require("got");
43
42
  var cookieJar_1 = require("./cookieJar");
44
43
  var cookieJar = new cookieJar_1.CookieJar();
@@ -118,88 +117,6 @@ function jsonRequest(requestOptions) {
118
117
  });
119
118
  });
120
119
  }
121
- /**
122
- * Used for binary responses, such as BCS outputs
123
- *
124
- * @experimental
125
- * @param requestOptions
126
- */
127
- function bcsRequest(requestOptions) {
128
- return __awaiter(this, void 0, void 0, function () {
129
- var params, method, url, headers, body, request, _a, _b, _c, error_2, gotError;
130
- return __generator(this, function (_d) {
131
- switch (_d.label) {
132
- case 0:
133
- params = requestOptions.params, method = requestOptions.method, url = requestOptions.url, headers = requestOptions.headers, body = requestOptions.body;
134
- request = {
135
- http2: true,
136
- searchParams: convertBigIntToString(params),
137
- method: method,
138
- url: url,
139
- responseType: "buffer",
140
- headers: headers,
141
- hooks: {
142
- beforeRequest: [
143
- function (options) {
144
- var cookies = cookieJar.getCookies(new URL(options.url));
145
- if ((cookies === null || cookies === void 0 ? void 0 : cookies.length) > 0 && options.headers) {
146
- /* eslint-disable no-param-reassign */
147
- options.headers.cookie = cookies
148
- .map(function (cookie) { return "".concat(cookie.name, "=").concat(cookie.value); })
149
- .join("; ");
150
- }
151
- },
152
- ],
153
- afterResponse: [
154
- function (response) {
155
- if (Array.isArray(response.headers["set-cookie"])) {
156
- response.headers["set-cookie"].forEach(function (c) {
157
- cookieJar.setCookie(new URL(response.url), c);
158
- });
159
- }
160
- return response;
161
- },
162
- ],
163
- },
164
- };
165
- if (body) {
166
- if (body instanceof Uint8Array) {
167
- request.body = Buffer.from(body);
168
- }
169
- else {
170
- request.body = Buffer.from(JSON.stringify(body));
171
- }
172
- }
173
- _d.label = 1;
174
- case 1:
175
- _d.trys.push([1, 7, , 8]);
176
- _a = method;
177
- switch (_a) {
178
- case "GET": return [3 /*break*/, 2];
179
- case "POST": return [3 /*break*/, 4];
180
- }
181
- return [3 /*break*/, 6];
182
- case 2:
183
- _b = parseResponse;
184
- return [4 /*yield*/, got_1.default.get(request)];
185
- case 3: return [2 /*return*/, _b.apply(void 0, [_d.sent()])];
186
- case 4:
187
- _c = parseResponse;
188
- return [4 /*yield*/, got_1.default.post(request)];
189
- case 5: return [2 /*return*/, _c.apply(void 0, [_d.sent()])];
190
- case 6: return [3 /*break*/, 8];
191
- case 7:
192
- error_2 = _d.sent();
193
- gotError = error_2;
194
- if (gotError.response) {
195
- return [2 /*return*/, parseResponse(gotError.response)];
196
- }
197
- throw error_2;
198
- case 8: throw new Error("Unsupported method: ".concat(method));
199
- }
200
- });
201
- });
202
- }
203
120
  function parseResponse(response) {
204
121
  return {
205
122
  status: response.statusCode,
package/package.json CHANGED
@@ -53,11 +53,11 @@
53
53
  "Aptos SDK"
54
54
  ],
55
55
  "peerDependencies": {
56
- "axios": "^1.7.7",
56
+ "axios": "^1.8.4",
57
57
  "got": "^11.8.6"
58
58
  },
59
59
  "devDependencies": {
60
- "@types/node": "22.9.0",
60
+ "@types/node": "22.13.10",
61
61
  "@typescript-eslint/eslint-plugin": "6.21.0",
62
62
  "@typescript-eslint/parser": "6.21.0",
63
63
  "eslint": "8.57.1",
@@ -65,11 +65,11 @@
65
65
  "eslint-config-airbnb-base": "15.0.0",
66
66
  "eslint-config-airbnb-typescript": "17.1.0",
67
67
  "eslint-plugin-import": "2.31.0",
68
- "prettier": "3.3.3",
69
- "semver": "7.6.3",
68
+ "prettier": "3.5.3",
69
+ "semver": "7.7.1",
70
70
  "ts-node": "10.9.2",
71
- "tsup": "8.3.5",
72
- "typescript": "5.6.3"
71
+ "tsup": "8.4.0",
72
+ "typescript": "5.8.2"
73
73
  },
74
- "version": "1.0.0"
74
+ "version": "1.2.0"
75
75
  }