UNPKG

@tronlink/core

Version:

The library serves as a core module within TronLink Extension, which provides low-level wallet functionality for both Tron and Ethereum networks, primary features includes account generation and transaction signing

109 lines 3.82 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const defaultOption_1 = __importDefault(require("./defaultOption")); const utils_1 = require("./utils"); class axiosFaker { defaultOps; constructor(options) { this.defaultOps = {}; Object.assign(this.defaultOps, defaultOption_1.default, options); } config(options) { Object.assign(this.defaultOps, options); } /** * define FaxiosRequest=>FaxiosResponse * @param req */ async request(...req) { req = req || {}; const customOps = req.config || {}; let res; const timeout = customOps.timeout || this.defaultOps.timeout || 30000; req.config = Object.assign({}, this.defaultOps, req.config); try { const { url, requestInit } = await this.transformRequest(req); const response = await (0, utils_1.promiseTimeout)(timeout, fetch(url, requestInit)); res = await this.transformResponse(response, req); return res; } catch (err) { throw err; } } async transformRequest(req) { const customOps = req.config || {}; const reqOps = Object.assign({}, this.defaultOps, customOps); const { mode } = reqOps; const { method, query, data } = req[0]; let url = req[0].url; let headers = req.headers; if (reqOps.baseURL && !(0, utils_1.isAbsoluteURL)(url)) { url = url ? reqOps.baseURL.replace(/\/+$/, '') + '/' + url.replace(/^\/+/, '') : reqOps.baseURL; } if (!url) { throw new Error('request: url is undefined.'); } if (!method) { throw new Error('request: method is undefined.'); } if (method.toUpperCase() === 'GET') { url += '?' + (0, utils_1.serialize)(query); } headers = Object.assign({}, this.defaultOps.headers, headers || {}); let body = data; const contentType = headers['Content-Type']; if (body) { body = JSON.stringify(data); } // https://developer.mozilla.org/zh-CN/docs/Web/API/Request/Request const requestInit = { method, headers, body, mode, }; return { url, requestInit }; } async transformResponse(response, req) { const resp = { data: null, status: response.status, statusText: response.statusText, headers: (0, utils_1.transformHeader)(response.headers), config: req.config || {}, request: req, originalResponse: response, }; if (response.ok) { let contentType = response.headers.get('Content-Type') || 'application/json'; contentType = contentType.toLowerCase(); if (/^application\/json/.test(contentType)) { resp.data = await response.json(); } else if (/^text\/plain/.test(contentType)) { resp.data = await response.text(); } else if (/^application\/octet-stream/.test(contentType)) { resp.data = await response.blob(); } else { try { resp.data = await response.json(); } catch (e) { console.warn('unknow content-type to parse response!'); // ignore... } } } return resp; } } exports.default = axiosFaker; //# sourceMappingURL=axiosFaker.js.map