chaingate
Version:
Multi-chain cryptocurrency SDK for TypeScript — unified API for Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash, Polygon, Arbitrum, and any EVM-compatible chain. Create wallets, query balances, send transactions, and manage tokens and NFTs across UTXO
242 lines (241 loc) • 8.09 kB
JavaScript
;
// This file is auto-generated by @hey-api/openapi-ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.createConfig = exports.createInterceptors = exports.mergeHeaders = exports.mergeConfigs = exports.buildUrl = exports.setAuthParams = exports.getParseAs = exports.createQuerySerializer = void 0;
const auth_gen_1 = require("../core/auth.gen");
const bodySerializer_gen_1 = require("../core/bodySerializer.gen");
const pathSerializer_gen_1 = require("../core/pathSerializer.gen");
const utils_gen_1 = require("../core/utils.gen");
const createQuerySerializer = ({ parameters = {}, ...args } = {}) => {
const querySerializer = (queryParams) => {
const search = [];
if (queryParams && typeof queryParams === 'object') {
for (const name in queryParams) {
const value = queryParams[name];
if (value === undefined || value === null) {
continue;
}
const options = parameters[name] || args;
if (Array.isArray(value)) {
const serializedArray = (0, pathSerializer_gen_1.serializeArrayParam)({
allowReserved: options.allowReserved,
explode: true,
name,
style: 'form',
value,
...options.array,
});
if (serializedArray)
search.push(serializedArray);
}
else if (typeof value === 'object') {
const serializedObject = (0, pathSerializer_gen_1.serializeObjectParam)({
allowReserved: options.allowReserved,
explode: true,
name,
style: 'deepObject',
value: value,
...options.object,
});
if (serializedObject)
search.push(serializedObject);
}
else {
const serializedPrimitive = (0, pathSerializer_gen_1.serializePrimitiveParam)({
allowReserved: options.allowReserved,
name,
value: value,
});
if (serializedPrimitive)
search.push(serializedPrimitive);
}
}
}
return search.join('&');
};
return querySerializer;
};
exports.createQuerySerializer = createQuerySerializer;
/**
* Infers parseAs value from provided Content-Type header.
*/
const getParseAs = (contentType) => {
if (!contentType) {
// If no Content-Type header is provided, the best we can do is return the raw response body,
// which is effectively the same as the 'stream' option.
return 'stream';
}
const cleanContent = contentType.split(';')[0]?.trim();
if (!cleanContent) {
return;
}
if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {
return 'json';
}
if (cleanContent === 'multipart/form-data') {
return 'formData';
}
if (['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))) {
return 'blob';
}
if (cleanContent.startsWith('text/')) {
return 'text';
}
return;
};
exports.getParseAs = getParseAs;
const checkForExistence = (options, name) => {
if (!name) {
return false;
}
if (options.headers.has(name) ||
options.query?.[name] ||
options.headers.get('Cookie')?.includes(`${name}=`)) {
return true;
}
return false;
};
const setAuthParams = async ({ security, ...options }) => {
for (const auth of security) {
if (checkForExistence(options, auth.name)) {
continue;
}
const token = await (0, auth_gen_1.getAuthToken)(auth, options.auth);
if (!token) {
continue;
}
const name = auth.name ?? 'Authorization';
switch (auth.in) {
case 'query':
if (!options.query) {
options.query = {};
}
options.query[name] = token;
break;
case 'cookie':
options.headers.append('Cookie', `${name}=${token}`);
break;
case 'header':
default:
options.headers.set(name, token);
break;
}
}
};
exports.setAuthParams = setAuthParams;
const buildUrl = (options) => (0, utils_gen_1.getUrl)({
baseUrl: options.baseUrl,
path: options.path,
query: options.query,
querySerializer: typeof options.querySerializer === 'function'
? options.querySerializer
: (0, exports.createQuerySerializer)(options.querySerializer),
url: options.url,
});
exports.buildUrl = buildUrl;
const mergeConfigs = (a, b) => {
const config = { ...a, ...b };
if (config.baseUrl?.endsWith('/')) {
config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
}
config.headers = (0, exports.mergeHeaders)(a.headers, b.headers);
return config;
};
exports.mergeConfigs = mergeConfigs;
const headersEntries = (headers) => {
const entries = [];
headers.forEach((value, key) => {
entries.push([key, value]);
});
return entries;
};
const mergeHeaders = (...headers) => {
const mergedHeaders = new Headers();
for (const header of headers) {
if (!header) {
continue;
}
const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
for (const [key, value] of iterator) {
if (value === null) {
mergedHeaders.delete(key);
}
else if (Array.isArray(value)) {
for (const v of value) {
mergedHeaders.append(key, v);
}
}
else if (value !== undefined) {
// assume object headers are meant to be JSON stringified, i.e. their
// content value in OpenAPI specification is 'application/json'
mergedHeaders.set(key, typeof value === 'object' ? JSON.stringify(value) : value);
}
}
}
return mergedHeaders;
};
exports.mergeHeaders = mergeHeaders;
class Interceptors {
constructor() {
this.fns = [];
}
clear() {
this.fns = [];
}
eject(id) {
const index = this.getInterceptorIndex(id);
if (this.fns[index]) {
this.fns[index] = null;
}
}
exists(id) {
const index = this.getInterceptorIndex(id);
return Boolean(this.fns[index]);
}
getInterceptorIndex(id) {
if (typeof id === 'number') {
return this.fns[id] ? id : -1;
}
return this.fns.indexOf(id);
}
update(id, fn) {
const index = this.getInterceptorIndex(id);
if (this.fns[index]) {
this.fns[index] = fn;
return id;
}
return false;
}
use(fn) {
this.fns.push(fn);
return this.fns.length - 1;
}
}
const createInterceptors = () => ({
error: new Interceptors(),
request: new Interceptors(),
response: new Interceptors(),
});
exports.createInterceptors = createInterceptors;
const defaultQuerySerializer = (0, exports.createQuerySerializer)({
allowReserved: false,
array: {
explode: true,
style: 'form',
},
object: {
explode: true,
style: 'deepObject',
},
});
const defaultHeaders = {
'Content-Type': 'application/json',
};
const createConfig = (override = {}) => ({
...bodySerializer_gen_1.jsonBodySerializer,
headers: defaultHeaders,
parseAs: 'auto',
querySerializer: defaultQuerySerializer,
...override,
});
exports.createConfig = createConfig;