UNPKG

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
"use strict"; // 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;