123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.formatUrl = formatUrl;
- exports.formatWithValidation = formatWithValidation;
- exports.urlObjectKeys = void 0;
- var _interop_require_wildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
- var querystring = _interop_require_wildcard(require("./querystring"));
- const slashedProtocols = /https?|ftp|gopher|file/;
- function formatUrl(urlObj) {
- let { auth , hostname } = urlObj;
- let protocol = urlObj.protocol || '';
- let pathname = urlObj.pathname || '';
- let hash = urlObj.hash || '';
- let query = urlObj.query || '';
- let host = false;
- auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : '';
- if (urlObj.host) {
- host = auth + urlObj.host;
- } else if (hostname) {
- host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname);
- if (urlObj.port) {
- host += ':' + urlObj.port;
- }
- }
- if (query && typeof query === 'object') {
- query = String(querystring.urlQueryToSearchParams(query));
- }
- let search = urlObj.search || query && `?${query}` || '';
- if (protocol && !protocol.endsWith(':')) protocol += ':';
- if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) {
- host = '//' + (host || '');
- if (pathname && pathname[0] !== '/') pathname = '/' + pathname;
- } else if (!host) {
- host = '';
- }
- if (hash && hash[0] !== '#') hash = '#' + hash;
- if (search && search[0] !== '?') search = '?' + search;
- pathname = pathname.replace(/[?#]/g, encodeURIComponent);
- search = search.replace('#', '%23');
- return `${protocol}${host}${pathname}${search}${hash}`;
- }
- const urlObjectKeys = [
- 'auth',
- 'hash',
- 'host',
- 'hostname',
- 'href',
- 'path',
- 'pathname',
- 'port',
- 'protocol',
- 'query',
- 'search',
- 'slashes',
- ];
- exports.urlObjectKeys = urlObjectKeys;
- function formatWithValidation(url) {
- if (process.env.NODE_ENV === 'development') {
- if (url !== null && typeof url === 'object') {
- Object.keys(url).forEach((key)=>{
- if (urlObjectKeys.indexOf(key) === -1) {
- console.warn(`Unknown key passed via urlObject into url.format: ${key}`);
- }
- });
- }
- }
- return formatUrl(url);
- }
- //# sourceMappingURL=format-url.js.map
|