UNPKG

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