'use strict'; function _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl) { if (trustedBaseUrl.endsWith('/')) { trustedBaseUrl = trustedBaseUrl.substring(0, trustedBaseUrl.length - 1); } if (sandboxBaseUrl.endsWith('/')) { sandboxBaseUrl = sandboxBaseUrl.substring(0, sandboxBaseUrl.length - 1); } if (publicBaseUrl.endsWith('/')) { publicBaseUrl = publicBaseUrl.substring(0, publicBaseUrl.length - 1); } return {trustedBaseUrl, sandboxBaseUrl, publicBaseUrl}; } function getMergeTagsForBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl) { const bases = _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl); return { URL_BASE: bases.publicBaseUrl, TRUSTED_URL_BASE: bases.trustedBaseUrl, SANDBOX_URL_BASE: bases.sandboxBaseUrl, ENCODED_URL_BASE: encodeURIComponent(bases.publicBaseUrl), ENCODED_TRUSTED_URL_BASE: encodeURIComponent(bases.trustedBaseUrl), ENCODED_SANDBOX_URL_BASE: encodeURIComponent(bases.sandboxBaseUrl) }; } function base(text, trustedBaseUrl, sandboxBaseUrl, publicBaseUrl) { const bases = _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl); text = text.split('[URL_BASE]').join(bases.publicBaseUrl); text = text.split('[TRUSTED_URL_BASE]').join(bases.trustedBaseUrl); text = text.split('[SANDBOX_URL_BASE]').join(bases.sandboxBaseUrl); text = text.split('[ENCODED_URL_BASE]').join(encodeURIComponent(bases.publicBaseUrl)); text = text.split('[ENCODED_TRUSTED_URL_BASE]').join(encodeURIComponent(bases.trustedBaseUrl)); text = text.split('[ENCODED_SANDBOX_URL_BASE]').join(encodeURIComponent(bases.sandboxBaseUrl)); return text; } function unbase(text, trustedBaseUrl, sandboxBaseUrl, publicBaseUrl, treatAllAsPublic = false) { const bases = _getBases(trustedBaseUrl, sandboxBaseUrl, publicBaseUrl); text = text.split(bases.publicBaseUrl).join('[URL_BASE]'); text = text.split(bases.trustedBaseUrl).join(treatAllAsPublic ? '[URL_BASE]' : '[TRUSTED_URL_BASE]'); text = text.split(bases.sandboxBaseUrl).join(treatAllAsPublic ? '[URL_BASE]' : '[SANDBOX_URL_BASE]'); text = text.split(encodeURIComponent(bases.publicBaseUrl)).join('[ENCODED_URL_BASE]'); text = text.split(encodeURIComponent(bases.trustedBaseUrl)).join(treatAllAsPublic ? '[ENCODED_URL_BASE]' : '[ENCODED_TRUSTED_URL_BASE]'); text = text.split(encodeURIComponent(bases.sandboxBaseUrl)).join(treatAllAsPublic ? '[ENCODED_URL_BASE]' : '[ENCODED_SANDBOX_URL_BASE]'); return text; } module.exports = { base, unbase, getMergeTagsForBases };