@jackiemacklein/nettz-utils
Version:
Serviços de imagem, e-mail, códigos de barras, utilitários numéricos e componentes React para apps Node.js com TypeScript
42 lines (41 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeAsaasBaseUrl = normalizeAsaasBaseUrl;
const types_1 = require("./types");
/**
* Normaliza ASAAS_API_URL / baseUrl do cliente.
* - Remove barra final e sufixo `/v3` (a versão é acrescentada pelo cliente).
* - Sandbox sem `/api`: `https://sandbox.asaas.com` → `https://sandbox.asaas.com/api`.
* - Produção: `https://api.asaas.com` (sem segmento `/api`).
*/
function normalizeAsaasBaseUrl(baseUrl) {
if (!(baseUrl === null || baseUrl === void 0 ? void 0 : baseUrl.trim())) {
return types_1.ASAAS_DEFAULT_BASE_URL;
}
let url = baseUrl.trim().replace(/\/+$/, "");
if (/\/v3$/i.test(url)) {
url = url.replace(/\/v3$/i, "");
}
try {
const parsed = new URL(url);
const host = parsed.hostname.toLowerCase();
const path = parsed.pathname.replace(/\/+$/, "") || "";
if (host === "sandbox.asaas.com") {
if (path === "" || path === "/") {
return types_1.ASAAS_DEFAULT_BASE_URL;
}
if (!path.startsWith("/api")) {
return types_1.ASAAS_DEFAULT_BASE_URL;
}
}
if (host === "api.asaas.com") {
if (path === "/api") {
return types_1.ASAAS_PRODUCTION_BASE_URL;
}
}
}
catch {
return url;
}
return url;
}