UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

79 lines (65 loc) 2.3 kB
"use strict"; var each = require("../core/utils/iterator").each, domAdapter = require("../core/dom_adapter"), window = require("../core/utils/window").getWindow(), callOnce = require("../core/utils/call_once"), DXPROXY_HOST = "dxproxy.devexpress.com:8000", urlMapping = {}; var getUrlParser = callOnce(function () { var a = domAdapter.createElement("a"), props = ["protocol", "hostname", "port", "pathname", "search", "hash"]; var normalizePath = function normalizePath(value) { // occurs at least in IE if (value.charAt(0) !== "/") { value = "/" + value; } return value; }; return function (url) { a.href = url; var result = {}; each(props, function () { result[this] = a[this]; }); result.pathname = normalizePath(result.pathname); return result; }; }); var parseUrl = function parseUrl(url) { var urlParser = getUrlParser(); return urlParser(url); }; var extractProxyAppId = function extractProxyAppId() { return window.location.pathname.split("/")[1]; }; module.exports = { parseUrl: parseUrl, isProxyUsed: function isProxyUsed() { return window.location.host === DXPROXY_HOST; }, formatProxyUrl: function formatProxyUrl(localUrl) { var urlData = parseUrl(localUrl); if (!/^(localhost$|127\.)/i.test(urlData.hostname)) { return localUrl; } var proxyUrlPart = DXPROXY_HOST + "/" + extractProxyAppId() + "_" + urlData.port; urlMapping[proxyUrlPart] = urlData.hostname + ":" + urlData.port; var resultUrl = "http://" + proxyUrlPart + urlData.pathname + urlData.search; return resultUrl; }, formatLocalUrl: function formatLocalUrl(proxyUrl) { if (proxyUrl.indexOf(DXPROXY_HOST) < 0) { return proxyUrl; } var resultUrl = proxyUrl; for (var proxyUrlPart in urlMapping) { if (urlMapping.hasOwnProperty(proxyUrlPart)) { if (proxyUrl.indexOf(proxyUrlPart) >= 0) { resultUrl = proxyUrl.replace(proxyUrlPart, urlMapping[proxyUrlPart]); break; } } } return resultUrl; } };