Buckets:
| ; | |
| var constants = require("./constants"); | |
| function formatAuth(urlObj, options) | |
| { | |
| if (urlObj.auth && !options.removeAuth && (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE)) | |
| { | |
| return urlObj.auth + "@"; | |
| } | |
| return ""; | |
| } | |
| function formatHash(urlObj, options) | |
| { | |
| return urlObj.hash ? urlObj.hash : ""; | |
| } | |
| function formatHost(urlObj, options) | |
| { | |
| if (urlObj.host.full && (urlObj.extra.relation.maximumAuth || options.output===constants.ABSOLUTE)) | |
| { | |
| return urlObj.host.full; | |
| } | |
| return ""; | |
| } | |
| function formatPath(urlObj, options) | |
| { | |
| var str = ""; | |
| var absolutePath = urlObj.path.absolute.string; | |
| var relativePath = urlObj.path.relative.string; | |
| var resource = showResource(urlObj, options); | |
| if (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE || options.output===constants.ROOT_RELATIVE) | |
| { | |
| str = absolutePath; | |
| } | |
| else if (relativePath.length<=absolutePath.length && options.output===constants.SHORTEST || options.output===constants.PATH_RELATIVE) | |
| { | |
| str = relativePath; | |
| if (str === "") | |
| { | |
| var query = showQuery(urlObj,options) && !!getQuery(urlObj,options); | |
| if (urlObj.extra.relation.maximumPath && !resource) | |
| { | |
| str = "./"; | |
| } | |
| else if (urlObj.extra.relation.overridesQuery && !resource && !query) | |
| { | |
| str = "./"; | |
| } | |
| } | |
| } | |
| else | |
| { | |
| str = absolutePath; | |
| } | |
| if ( str==="/" && !resource && options.removeRootTrailingSlash && (!urlObj.extra.relation.minimumPort || options.output===constants.ABSOLUTE) ) | |
| { | |
| str = ""; | |
| } | |
| return str; | |
| } | |
| function formatPort(urlObj, options) | |
| { | |
| if (urlObj.port && !urlObj.extra.portIsDefault && urlObj.extra.relation.maximumHost) | |
| { | |
| return ":" + urlObj.port; | |
| } | |
| return ""; | |
| } | |
| function formatQuery(urlObj, options) | |
| { | |
| return showQuery(urlObj,options) ? getQuery(urlObj, options) : ""; | |
| } | |
| function formatResource(urlObj, options) | |
| { | |
| return showResource(urlObj,options) ? urlObj.resource : ""; | |
| } | |
| function formatScheme(urlObj, options) | |
| { | |
| var str = ""; | |
| if (urlObj.extra.relation.maximumHost || options.output===constants.ABSOLUTE) | |
| { | |
| if (!urlObj.extra.relation.minimumScheme || !options.schemeRelative || options.output===constants.ABSOLUTE) | |
| { | |
| str += urlObj.scheme + "://"; | |
| } | |
| else | |
| { | |
| str += "//"; | |
| } | |
| } | |
| return str; | |
| } | |
| function formatUrl(urlObj, options) | |
| { | |
| var url = ""; | |
| url += formatScheme(urlObj, options); | |
| url += formatAuth(urlObj, options); | |
| url += formatHost(urlObj, options); | |
| url += formatPort(urlObj, options); | |
| url += formatPath(urlObj, options); | |
| url += formatResource(urlObj, options); | |
| url += formatQuery(urlObj, options); | |
| url += formatHash(urlObj, options); | |
| return url; | |
| } | |
| function getQuery(urlObj, options) | |
| { | |
| var stripQuery = options.removeEmptyQueries && urlObj.extra.relation.minimumPort; | |
| return urlObj.query.string[ stripQuery ? "stripped" : "full" ]; | |
| } | |
| function showQuery(urlObj, options) | |
| { | |
| return !urlObj.extra.relation.minimumQuery || options.output===constants.ABSOLUTE || options.output===constants.ROOT_RELATIVE; | |
| } | |
| function showResource(urlObj, options) | |
| { | |
| var removeIndex = options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex; | |
| var removeMatchingResource = urlObj.extra.relation.minimumResource && options.output!==constants.ABSOLUTE && options.output!==constants.ROOT_RELATIVE; | |
| return !!urlObj.resource && !removeMatchingResource && !removeIndex; | |
| } | |
| module.exports = formatUrl; | |
Xet Storage Details
- Size:
- 3.43 kB
- Xet hash:
- 3cbaeff68ddb4673f2b24382881e421707b54deceb01fdf35a75f0174feb4876
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.