diff options
Diffstat (limited to 'node_modules/relateurl')
21 files changed, 0 insertions, 1387 deletions
diff --git a/node_modules/relateurl/README.md b/node_modules/relateurl/README.md deleted file mode 100644 index fb65fca3d..000000000 --- a/node_modules/relateurl/README.md +++ /dev/null @@ -1,159 +0,0 @@ -# relateurl [![NPM Version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][david-image]][david-url] - -> Minify URLs by converting them from absolute to relative. - -If you were to use this library on a website like `http://example.com/dir1/dir1-1/`, you would get results such as: - -| Before | After | -| :------------------------------------------ | :----------------------------------- | -| `http://example.com/dir1/dir1-2/index.html` | `../dir1-2/` | -| `http://example.com/dir2/dir2-1/` | `/dir2/dir2-1/` | -| `http://example.com/dir1/dir1-1/` | ` ` | -| `https://example.com/dir1/dir1-1/` | `https://example.com/dir1/dir1-1/` | -| `http://google.com:80/dir/` | `//google.com/dir/` | -| `../../../../../../../../#anchor` | `/#anchor` | - -**All string parsing.** *No* directory browsing. It is thoroughly tested, very fast and lightweight with zero external dependencies. - -## Getting Started - -This utility requires [Node.js](http://nodejs.org/) `>= 0.10`. To install, type this at the command line: -``` -npm install relateurl --save-dev -``` - -### Options - -#### options.defaultPorts -Type: `Object` -Default value: `{ftp:21, http:80, https:443}` - -Extend the list with any ports you need. Any URLs containing these default ports will have them removed. Example: `http://example.com:80/` will become `http://example.com/`. - -#### options.directoryIndexes -Type: `Array` -Default value: `["index.html"]` - -Extend the list with any resources you need. Works with [`options.removeDirectoryIndexes`](#options.removeDirectoryIndexes). - -#### options.ignore_www -Type: `Boolean` -Default value: `false` - -This will, for example, consider any domains containing `http://www.example.com/` to be related to any that contain `http://example.com/`. - -#### options.output -Type: constant or `String` -Choices: `RelateUrl.ABSOLUTE`,`RelateUrl.PATH_RELATIVE`,`RelateUrl.ROOT_RELATIVE`,`RelateUrl.SHORTEST` -Choices: `"absolute"`,`"pathRelative"`,`"rootRelative"`,`"shortest"` -Default value: `RelateUrl.SHORTEST` - -`RelateUrl.ABSOLUTE` will produce an absolute URL. Overrides [`options.schemeRelative`](#options.schemeRelative) with a value of `false`. -`RelateUrl.PATH_RELATIVE` will produce something like `../child-of-parent/etc/`. -`RelateUrl.ROOT_RELATIVE` will produce something like `/child-of-root/etc/`. -`RelateUrl.SHORTEST` will choose whichever is shortest between root- and path-relative. - -#### options.rejectedSchemes -Type: `Array` -Default value: `["data","javascript","mailto"]` - -Extend the list with any additional schemes. Example: `javascript:something` will not be modified. - -#### options.removeAuth -Type: `Boolean` -Default value: `false` - -Remove user authentication information from the output URL. - -#### options.removeDirectoryIndexes -Type: `Boolean` -Default value: `true` - -Remove any resources that match any found in [`options.directoryIndexes`](#options.directoryIndexes). - -#### options.removeEmptyQueries -Type: `Boolean` -Default value: `false` - -Remove empty query variables. Example: `http://domain.com/?var1&var2=&var3=asdf` will become `http://domain.com/?var3=adsf`. This does not apply to unrelated URLs (with other protocols, auths, hosts and/or ports). - -#### options.removeRootTrailingSlash -Type: `Boolean` -Default value: `true` - -Remove trailing slashes from root paths. Example: `http://domain.com/?var` will become `http://domain.com?var` while `http://domain.com/dir/?var` will not be modified. - -#### options.schemeRelative -Type: `Boolean` -Default value: `true` - -Output URLs relative to the scheme. Example: `http://example.com/` will become `//example.com/`. - -#### options.site -Type: `String` -Default value: `undefined` - -An options-based version of the [`from`](#examples) argument. If both are specified, `from` takes priority. - -#### options.slashesDenoteHost -Type: `Boolean` -Default value: `true` - -Passed to Node's [`url.parse`](http://nodejs.org/api/url.html#url_url_parse_urlstr_parsequerystring_slashesdenotehost). - -### Examples -This library can be used as a [function for single-use](#single-instance) or as a [class for multiple conversions](#reusable-instances). - -Upon successful conversion, a `String` will be returned. If an issue is encountered while parsing `from`, an error will be thrown. - -#### Single Instance -```js -var RelateUrl = require("relateurl"); - -var result = RelateUrl.relate(from, to, options); -``` - -#### Reusable Instances -```js -var RelateUrl = require("relateurl"); - -var instance = new RelateUrl(from, options); - -var result1 = instance.relate(to1); -var result2 = instance.relate(to2, customOptions); -var result3 = instance.relate(to3); -``` - -## FAQ -1. **Why bother writing/using this?** -To aid in further minifying HTML, mainly for the purpose of faster page loads and SEO. It's been integrated into [HTMLMinifier](https://github.com/kangax/html-minifier). - -2. **Why not just use Node's `url.parse`, `url.resolve` and `path.relative`?** -`url.parse` *is* used, but `url.resolve` and `path.relative` are both slower and less powerful than this library. - - -## Release History -* 0.2.7 Node v6 support -* 0.2.6 minor enhancements -* 0.2.5 added `options.removeRootTrailingSlash` -* 0.2.4 added `options.site` -* 0.2.3 added browserify npm-script -* 0.2.2 removed task runner -* 0.2.1 shorten resource- and query-relative URLs, test variations list with other site URLs -* 0.2.0 code cleanup, `options.removeEmptyQueries=true` only applied to unrelated URLs -* 0.1.0 initial release - - -## Roadmap -* 0.2.8 check if queries are the same, regardless of param order -* 0.2.8 possible [scheme exclusions](http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml) such as `tel:` -* 0.2.8 decipher and return invalid input (special cases) to complete test suite -* 0.3.0 test `options.slashesDenoteHost=false`, add something like `options.externalDirectoryIndexes=[]` for external sites - - -[npm-image]: https://img.shields.io/npm/v/relateurl.svg -[npm-url]: https://npmjs.org/package/relateurl -[travis-image]: https://img.shields.io/travis/stevenvachon/relateurl.svg -[travis-url]: https://travis-ci.org/stevenvachon/relateurl -[david-image]: https://img.shields.io/david/stevenvachon/relateurl.svg -[david-url]: https://david-dm.org/stevenvachon/relateurl diff --git a/node_modules/relateurl/lib/constants.js b/node_modules/relateurl/lib/constants.js deleted file mode 100644 index d4cc8dd69..000000000 --- a/node_modules/relateurl/lib/constants.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -module.exports = -{ - // Output - ABSOLUTE: "absolute", - PATH_RELATIVE: "pathRelative", - ROOT_RELATIVE: "rootRelative", - SHORTEST: "shortest" -}; diff --git a/node_modules/relateurl/lib/format.js b/node_modules/relateurl/lib/format.js deleted file mode 100644 index 4dd5ddc08..000000000 --- a/node_modules/relateurl/lib/format.js +++ /dev/null @@ -1,174 +0,0 @@ -"use strict"; - -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; diff --git a/node_modules/relateurl/lib/index.js b/node_modules/relateurl/lib/index.js deleted file mode 100644 index 714237d59..000000000 --- a/node_modules/relateurl/lib/index.js +++ /dev/null @@ -1,94 +0,0 @@ -"use strict"; - -var constants = require("./constants"); -var formatUrl = require("./format"); -var getOptions = require("./options"); -var objUtils = require("./util/object"); -var parseUrl = require("./parse"); -var relateUrl = require("./relate"); - - - -function RelateUrl(from, options) -{ - this.options = getOptions(options, - { - defaultPorts: {ftp:21, http:80, https:443}, - directoryIndexes: ["index.html"], - ignore_www: false, - output: RelateUrl.SHORTEST, - rejectedSchemes: ["data","javascript","mailto"], - removeAuth: false, - removeDirectoryIndexes: true, - removeEmptyQueries: false, - removeRootTrailingSlash: true, - schemeRelative: true, - site: undefined, - slashesDenoteHost: true - }); - - this.from = parseUrl.from(from, this.options, null); -} - - - -/* - Usage: instance=new RelateUrl(); instance.relate(); -*/ -RelateUrl.prototype.relate = function(from, to, options) -{ - // relate(to,options) - if ( objUtils.isPlainObject(to) ) - { - options = to; - to = from; - from = null; - } - // relate(to) - else if (!to) - { - to = from; - from = null; - } - - options = getOptions(options, this.options); - from = from || options.site; - from = parseUrl.from(from, options, this.from); - - if (!from || !from.href) - { - throw new Error("from value not defined."); - } - else if (from.extra.hrefInfo.minimumPathOnly) - { - throw new Error("from value supplied is not absolute: "+from.href); - } - - to = parseUrl.to(to, options); - - if (to.valid===false) return to.href; - - to = relateUrl(from, to, options); - to = formatUrl(to, options); - - return to; -} - - - -/* - Usage: RelateUrl.relate(); -*/ -RelateUrl.relate = function(from, to, options) -{ - return new RelateUrl().relate(from, to, options); -} - - - -// Make constants accessible from API -objUtils.shallowMerge(RelateUrl, constants); - - - -module.exports = RelateUrl; diff --git a/node_modules/relateurl/lib/options.js b/node_modules/relateurl/lib/options.js deleted file mode 100644 index fe8910f71..000000000 --- a/node_modules/relateurl/lib/options.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -var objUtils = require("./util/object"); - - - -function getOptions(options, defaults) -{ - if ( objUtils.isPlainObject(options) ) - { - var newOptions = {}; - - for (var i in defaults) - { - if ( defaults.hasOwnProperty(i) ) - { - if (options[i] !== undefined) - { - newOptions[i] = mergeOption(options[i], defaults[i]); - } - else - { - newOptions[i] = defaults[i]; - } - } - } - - return newOptions; - } - else - { - return defaults; - } -} - - - -function mergeOption(newValues, defaultValues) -{ - if (defaultValues instanceof Object && newValues instanceof Object) - { - if (defaultValues instanceof Array && newValues instanceof Array) - { - return defaultValues.concat(newValues); - } - else - { - return objUtils.shallowMerge(newValues, defaultValues); - } - } - - return newValues; -} - - - -module.exports = getOptions; diff --git a/node_modules/relateurl/lib/parse/host.js b/node_modules/relateurl/lib/parse/host.js deleted file mode 100644 index 21f04ff98..000000000 --- a/node_modules/relateurl/lib/parse/host.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -function parseHost(urlObj, options) -{ - // TWEAK :: condition only for speed optimization - if (options.ignore_www) - { - var host = urlObj.host.full; - - if (host) - { - var stripped = host; - - if (host.indexOf("www.") === 0) - { - stripped = host.substr(4); - } - - urlObj.host.stripped = stripped; - } - } -} - - - -module.exports = parseHost; diff --git a/node_modules/relateurl/lib/parse/hrefInfo.js b/node_modules/relateurl/lib/parse/hrefInfo.js deleted file mode 100644 index 8cac2bd82..000000000 --- a/node_modules/relateurl/lib/parse/hrefInfo.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; - -function hrefInfo(urlObj) -{ - var minimumPathOnly = (!urlObj.scheme && !urlObj.auth && !urlObj.host.full && !urlObj.port); - var minimumResourceOnly = (minimumPathOnly && !urlObj.path.absolute.string); - var minimumQueryOnly = (minimumResourceOnly && !urlObj.resource); - var minimumHashOnly = (minimumQueryOnly && !urlObj.query.string.full.length); - var empty = (minimumHashOnly && !urlObj.hash); - - urlObj.extra.hrefInfo.minimumPathOnly = minimumPathOnly; - urlObj.extra.hrefInfo.minimumResourceOnly = minimumResourceOnly; - urlObj.extra.hrefInfo.minimumQueryOnly = minimumQueryOnly; - urlObj.extra.hrefInfo.minimumHashOnly = minimumHashOnly; - urlObj.extra.hrefInfo.empty = empty; -} - - - -module.exports = hrefInfo; diff --git a/node_modules/relateurl/lib/parse/index.js b/node_modules/relateurl/lib/parse/index.js deleted file mode 100644 index 9f3677818..000000000 --- a/node_modules/relateurl/lib/parse/index.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; - -var hrefInfo = require("./hrefInfo"); -var parseHost = require("./host"); -var parsePath = require("./path"); -var parsePort = require("./port"); -var parseQuery = require("./query"); -var parseUrlString = require("./urlstring"); -var pathUtils = require("../util/path"); - - - -function parseFromUrl(url, options, fallback) -{ - if (url) - { - var urlObj = parseUrl(url, options); - - // Because the following occurs in the relate stage for "to" URLs, - // such had to be mostly duplicated here - - var pathArray = pathUtils.resolveDotSegments(urlObj.path.absolute.array); - - urlObj.path.absolute.array = pathArray; - urlObj.path.absolute.string = "/" + pathUtils.join(pathArray); - - return urlObj; - } - else - { - return fallback; - } -} - - - -function parseUrl(url, options) -{ - var urlObj = parseUrlString(url, options); - - if (urlObj.valid===false) return urlObj; - - parseHost(urlObj, options); - parsePort(urlObj, options); - parsePath(urlObj, options); - parseQuery(urlObj, options); - hrefInfo(urlObj); - - return urlObj; -} - - - -module.exports = -{ - from: parseFromUrl, - to: parseUrl -}; diff --git a/node_modules/relateurl/lib/parse/path.js b/node_modules/relateurl/lib/parse/path.js deleted file mode 100644 index 093c00c69..000000000 --- a/node_modules/relateurl/lib/parse/path.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -function isDirectoryIndex(resource, options) -{ - var verdict = false; - - options.directoryIndexes.every( function(index) - { - if (index === resource) - { - verdict = true; - return false; - } - - return true; - }); - - return verdict; -} - - - -function parsePath(urlObj, options) -{ - var path = urlObj.path.absolute.string; - - if (path) - { - var lastSlash = path.lastIndexOf("/"); - - if (lastSlash > -1) - { - if (++lastSlash < path.length) - { - var resource = path.substr(lastSlash); - - if (resource!=="." && resource!=="..") - { - urlObj.resource = resource; - path = path.substr(0, lastSlash); - } - else - { - path += "/"; - } - } - - urlObj.path.absolute.string = path; - urlObj.path.absolute.array = splitPath(path); - } - else if (path==="." || path==="..") - { - // "..?var", "..#anchor", etc ... not "..index.html" - path += "/"; - - urlObj.path.absolute.string = path; - urlObj.path.absolute.array = splitPath(path); - } - else - { - // Resource-only - urlObj.resource = path; - urlObj.path.absolute.string = null; - } - - urlObj.extra.resourceIsIndex = isDirectoryIndex(urlObj.resource, options); - } - // Else: query/hash-only or empty -} - - - -function splitPath(path) -{ - // TWEAK :: condition only for speed optimization - if (path !== "/") - { - var cleaned = []; - - path.split("/").forEach( function(dir) - { - // Cleanup -- splitting "/dir/" becomes ["","dir",""] - if (dir !== "") - { - cleaned.push(dir); - } - }); - - return cleaned; - } - else - { - // Faster to skip the above block and just create an array - return []; - } -} - - - -module.exports = parsePath; diff --git a/node_modules/relateurl/lib/parse/port.js b/node_modules/relateurl/lib/parse/port.js deleted file mode 100644 index 8c4ee2e84..000000000 --- a/node_modules/relateurl/lib/parse/port.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; - -function parsePort(urlObj, options) -{ - var defaultPort = -1; - - for (var i in options.defaultPorts) - { - if ( i===urlObj.scheme && options.defaultPorts.hasOwnProperty(i) ) - { - defaultPort = options.defaultPorts[i]; - break; - } - } - - if (defaultPort > -1) - { - // Force same type as urlObj.port - defaultPort = defaultPort.toString(); - - if (urlObj.port === null) - { - urlObj.port = defaultPort; - } - - urlObj.extra.portIsDefault = (urlObj.port === defaultPort); - } -} - - - -module.exports = parsePort; diff --git a/node_modules/relateurl/lib/parse/query.js b/node_modules/relateurl/lib/parse/query.js deleted file mode 100644 index dbb85045c..000000000 --- a/node_modules/relateurl/lib/parse/query.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -var hasOwnProperty = Object.prototype.hasOwnProperty; - - - -function parseQuery(urlObj, options) -{ - urlObj.query.string.full = stringify(urlObj.query.object, false); - - // TWEAK :: condition only for speed optimization - if (options.removeEmptyQueries) - { - urlObj.query.string.stripped = stringify(urlObj.query.object, true); - } -} - - - -function stringify(queryObj, removeEmptyQueries) -{ - var count = 0; - var str = ""; - - for (var i in queryObj) - { - if ( i!=="" && hasOwnProperty.call(queryObj, i)===true ) - { - var value = queryObj[i]; - - if (value !== "" || !removeEmptyQueries) - { - str += (++count===1) ? "?" : "&"; - - i = encodeURIComponent(i); - - if (value !== "") - { - str += i +"="+ encodeURIComponent(value).replace(/%20/g,"+"); - } - else - { - str += i; - } - } - } - } - - return str; -} - - - -module.exports = parseQuery; diff --git a/node_modules/relateurl/lib/parse/urlstring.js b/node_modules/relateurl/lib/parse/urlstring.js deleted file mode 100644 index ca4d7d431..000000000 --- a/node_modules/relateurl/lib/parse/urlstring.js +++ /dev/null @@ -1,146 +0,0 @@ -"use strict"; - -var _parseUrl = require("url").parse; - - - -/* - Customize the URL object that Node generates - because: - - * necessary data for later - * urlObj.host is useless - * urlObj.hostname is too long - * urlObj.path is useless - * urlObj.pathname is too long - * urlObj.protocol is inaccurate; should be called "scheme" - * urlObj.search is mostly useless -*/ -function clean(urlObj) -{ - var scheme = urlObj.protocol; - - if (scheme) - { - // Remove ":" suffix - if (scheme.indexOf(":") === scheme.length-1) - { - scheme = scheme.substr(0, scheme.length-1); - } - } - - urlObj.host = - { - // TODO :: unescape(encodeURIComponent(s)) ? ... http://ecmanaut.blogspot.ca/2006/07/encoding-decoding-utf8-in-javascript.html - full: urlObj.hostname, - stripped: null - }; - - urlObj.path = - { - absolute: - { - array: null, - string: urlObj.pathname - }, - relative: - { - array: null, - string: null - } - }; - - urlObj.query = - { - object: urlObj.query, - string: - { - full: null, - stripped: null - } - }; - - urlObj.extra = - { - hrefInfo: - { - minimumPathOnly: null, - minimumResourceOnly: null, - minimumQueryOnly: null, - minimumHashOnly: null, - empty: null, - - separatorOnlyQuery: urlObj.search==="?" - }, - portIsDefault: null, - relation: - { - maximumScheme: null, - maximumAuth: null, - maximumHost: null, - maximumPort: null, - maximumPath: null, - maximumResource: null, - maximumQuery: null, - maximumHash: null, - - minimumScheme: null, - minimumAuth: null, - minimumHost: null, - minimumPort: null, - minimumPath: null, - minimumResource: null, - minimumQuery: null, - minimumHash: null, - - overridesQuery: null - }, - resourceIsIndex: null, - slashes: urlObj.slashes - }; - - urlObj.resource = null; - urlObj.scheme = scheme; - delete urlObj.hostname; - delete urlObj.pathname; - delete urlObj.protocol; - delete urlObj.search; - delete urlObj.slashes; - - return urlObj; -} - - - -function validScheme(url, options) -{ - var valid = true; - - options.rejectedSchemes.every( function(rejectedScheme) - { - valid = !(url.indexOf(rejectedScheme+":") === 0); - - // Break loop - return valid; - }); - - return valid; -} - - - -function parseUrlString(url, options) -{ - if ( validScheme(url,options) ) - { - return clean( _parseUrl(url, true, options.slashesDenoteHost) ); - } - else - { - return {href:url, valid:false}; - } -} - - - -module.exports = parseUrlString; diff --git a/node_modules/relateurl/lib/relate/absolutize.js b/node_modules/relateurl/lib/relate/absolutize.js deleted file mode 100644 index 2b535a59b..000000000 --- a/node_modules/relateurl/lib/relate/absolutize.js +++ /dev/null @@ -1,89 +0,0 @@ -"use strict"; - -var findRelation = require("./findRelation"); -var objUtils = require("../util/object"); -var pathUtils = require("../util/path"); - - - -function absolutize(urlObj, siteUrlObj, options) -{ - findRelation.upToPath(urlObj, siteUrlObj, options); - - // Fill in relative URLs - if (urlObj.extra.relation.minimumScheme) urlObj.scheme = siteUrlObj.scheme; - if (urlObj.extra.relation.minimumAuth) urlObj.auth = siteUrlObj.auth; - if (urlObj.extra.relation.minimumHost) urlObj.host = objUtils.clone(siteUrlObj.host); - if (urlObj.extra.relation.minimumPort) copyPort(urlObj, siteUrlObj); - if (urlObj.extra.relation.minimumScheme) copyPath(urlObj, siteUrlObj); - - // Check remaining relativeness now that path has been copied and/or resolved - findRelation.pathOn(urlObj, siteUrlObj, options); - - // Fill in relative URLs - if (urlObj.extra.relation.minimumResource) copyResource(urlObj, siteUrlObj); - if (urlObj.extra.relation.minimumQuery) urlObj.query = objUtils.clone(siteUrlObj.query); - if (urlObj.extra.relation.minimumHash) urlObj.hash = siteUrlObj.hash; -} - - - -/* - Get an absolute path that's relative to site url. -*/ -function copyPath(urlObj, siteUrlObj) -{ - if (urlObj.extra.relation.maximumHost || !urlObj.extra.hrefInfo.minimumResourceOnly) - { - var pathArray = urlObj.path.absolute.array; - var pathString = "/"; - - // If not erroneous URL - if (pathArray) - { - // If is relative path - if (urlObj.extra.hrefInfo.minimumPathOnly && urlObj.path.absolute.string.indexOf("/")!==0) - { - // Append path to site path - pathArray = siteUrlObj.path.absolute.array.concat(pathArray); - } - - pathArray = pathUtils.resolveDotSegments(pathArray); - pathString += pathUtils.join(pathArray); - } - else - { - pathArray = []; - } - - urlObj.path.absolute.array = pathArray; - urlObj.path.absolute.string = pathString; - } - else - { - // Resource-, query- or hash-only or empty - urlObj.path = objUtils.clone(siteUrlObj.path); - } -} - - - -function copyPort(urlObj, siteUrlObj) -{ - urlObj.port = siteUrlObj.port; - - urlObj.extra.portIsDefault = siteUrlObj.extra.portIsDefault; -} - - - -function copyResource(urlObj, siteUrlObj) -{ - urlObj.resource = siteUrlObj.resource; - - urlObj.extra.resourceIsIndex = siteUrlObj.extra.resourceIsIndex; -} - - - -module.exports = absolutize; diff --git a/node_modules/relateurl/lib/relate/findRelation.js b/node_modules/relateurl/lib/relate/findRelation.js deleted file mode 100644 index c5423c3c4..000000000 --- a/node_modules/relateurl/lib/relate/findRelation.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -function findRelation_upToPath(urlObj, siteUrlObj, options) -{ - // Path- or root-relative URL - var pathOnly = urlObj.extra.hrefInfo.minimumPathOnly; - - // Matching scheme, scheme-relative or path-only - var minimumScheme = (urlObj.scheme===siteUrlObj.scheme || !urlObj.scheme); - - // Matching auth, ignoring auth or path-only - var minimumAuth = minimumScheme && (urlObj.auth===siteUrlObj.auth || options.removeAuth || pathOnly); - - // Matching host or path-only - var www = options.ignore_www ? "stripped" : "full"; - var minimumHost = minimumAuth && (urlObj.host[www]===siteUrlObj.host[www] || pathOnly); - - // Matching port or path-only - var minimumPort = minimumHost && (urlObj.port===siteUrlObj.port || pathOnly); - - urlObj.extra.relation.minimumScheme = minimumScheme; - urlObj.extra.relation.minimumAuth = minimumAuth; - urlObj.extra.relation.minimumHost = minimumHost; - urlObj.extra.relation.minimumPort = minimumPort; - - urlObj.extra.relation.maximumScheme = !minimumScheme || minimumScheme && !minimumAuth; - urlObj.extra.relation.maximumAuth = !minimumScheme || minimumScheme && !minimumHost; - urlObj.extra.relation.maximumHost = !minimumScheme || minimumScheme && !minimumPort; -} - - - -function findRelation_pathOn(urlObj, siteUrlObj, options) -{ - var queryOnly = urlObj.extra.hrefInfo.minimumQueryOnly; - var hashOnly = urlObj.extra.hrefInfo.minimumHashOnly; - var empty = urlObj.extra.hrefInfo.empty; // not required, but self-documenting - - // From upToPath() - var minimumPort = urlObj.extra.relation.minimumPort; - var minimumScheme = urlObj.extra.relation.minimumScheme; - - // Matching port and path - var minimumPath = minimumPort && urlObj.path.absolute.string===siteUrlObj.path.absolute.string; - - // Matching resource or query/hash-only or empty - var matchingResource = (urlObj.resource===siteUrlObj.resource || !urlObj.resource && siteUrlObj.extra.resourceIsIndex) || (options.removeDirectoryIndexes && urlObj.extra.resourceIsIndex && !siteUrlObj.resource); - var minimumResource = minimumPath && (matchingResource || queryOnly || hashOnly || empty); - - // Matching query or hash-only/empty - var query = options.removeEmptyQueries ? "stripped" : "full"; - var urlQuery = urlObj.query.string[query]; - var siteUrlQuery = siteUrlObj.query.string[query]; - var minimumQuery = (minimumResource && !!urlQuery && urlQuery===siteUrlQuery) || ((hashOnly || empty) && !urlObj.extra.hrefInfo.separatorOnlyQuery); - - var minimumHash = minimumQuery && urlObj.hash===siteUrlObj.hash; - - urlObj.extra.relation.minimumPath = minimumPath; - urlObj.extra.relation.minimumResource = minimumResource; - urlObj.extra.relation.minimumQuery = minimumQuery; - urlObj.extra.relation.minimumHash = minimumHash; - - urlObj.extra.relation.maximumPort = !minimumScheme || minimumScheme && !minimumPath; - urlObj.extra.relation.maximumPath = !minimumScheme || minimumScheme && !minimumResource; - urlObj.extra.relation.maximumResource = !minimumScheme || minimumScheme && !minimumQuery; - urlObj.extra.relation.maximumQuery = !minimumScheme || minimumScheme && !minimumHash; - urlObj.extra.relation.maximumHash = !minimumScheme || minimumScheme && !minimumHash; // there's nothing after hash, so it's the same as maximumQuery - - // Matching path and/or resource with existing but non-matching site query - urlObj.extra.relation.overridesQuery = minimumPath && urlObj.extra.relation.maximumResource && !minimumQuery && !!siteUrlQuery; -} - - - -module.exports = -{ - pathOn: findRelation_pathOn, - upToPath: findRelation_upToPath -}; diff --git a/node_modules/relateurl/lib/relate/index.js b/node_modules/relateurl/lib/relate/index.js deleted file mode 100644 index f90838181..000000000 --- a/node_modules/relateurl/lib/relate/index.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; - -var absolutize = require("./absolutize"); -var relativize = require("./relativize"); - - - -function relateUrl(siteUrlObj, urlObj, options) -{ - absolutize(urlObj, siteUrlObj, options); - relativize(urlObj, siteUrlObj, options); - - return urlObj; -} - - - -module.exports = relateUrl; diff --git a/node_modules/relateurl/lib/relate/relativize.js b/node_modules/relateurl/lib/relate/relativize.js deleted file mode 100644 index 9af9a1017..000000000 --- a/node_modules/relateurl/lib/relate/relativize.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; - -var pathUtils = require("../util/path"); - - - -/* - Get a path relative to the site path. -*/ -function relatePath(absolutePath, siteAbsolutePath) -{ - var relativePath = []; - - // At this point, it's related to the host/port - var related = true; - var parentIndex = -1; - - // Find parents - siteAbsolutePath.forEach( function(siteAbsoluteDir, i) - { - if (related) - { - if (absolutePath[i] !== siteAbsoluteDir) - { - related = false; - } - else - { - parentIndex = i; - } - } - - if (!related) - { - // Up one level - relativePath.push(".."); - } - }); - - // Form path - absolutePath.forEach( function(dir, i) - { - if (i > parentIndex) - { - relativePath.push(dir); - } - }); - - return relativePath; -} - - - -function relativize(urlObj, siteUrlObj, options) -{ - if (urlObj.extra.relation.minimumScheme) - { - var pathArray = relatePath(urlObj.path.absolute.array, siteUrlObj.path.absolute.array); - - urlObj.path.relative.array = pathArray; - urlObj.path.relative.string = pathUtils.join(pathArray); - } -} - - - -module.exports = relativize; diff --git a/node_modules/relateurl/lib/util/devlog.js b/node_modules/relateurl/lib/util/devlog.js deleted file mode 100644 index 086bdc946..000000000 --- a/node_modules/relateurl/lib/util/devlog.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; - -var inspect = require("util").inspect; - - - -function log(data) -{ - console.log( inspect(data, {depth:null, colors:true}) ); -} - - - -function logAll(data) -{ - console.log( inspect(data, {depth:null, showHidden:true, colors:true}) ); -} - - - -module.exports = -{ - log: log, - logAll: logAll -}; diff --git a/node_modules/relateurl/lib/util/object.js b/node_modules/relateurl/lib/util/object.js deleted file mode 100644 index 8eab7940e..000000000 --- a/node_modules/relateurl/lib/util/object.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; - -/* - Deep-clone an object. -*/ -function clone(obj) -{ - if (obj instanceof Object) - { - var clonedObj = (obj instanceof Array) ? [] : {}; - - for (var i in obj) - { - if ( obj.hasOwnProperty(i) ) - { - clonedObj[i] = clone( obj[i] ); - } - } - - return clonedObj; - } - - return obj; -} - - - -/* - https://github.com/jonschlinkert/is-plain-object -*/ -function isPlainObject(obj) -{ - return !!obj && typeof obj==="object" && obj.constructor===Object; -} - - - -/* - Shallow-merge two objects. -*/ -function shallowMerge(target, source) -{ - if (target instanceof Object && source instanceof Object) - { - for (var i in source) - { - if ( source.hasOwnProperty(i) ) - { - target[i] = source[i]; - } - } - } - - return target; -} - - - -module.exports = -{ - clone: clone, - isPlainObject: isPlainObject, - shallowMerge: shallowMerge -}; diff --git a/node_modules/relateurl/lib/util/path.js b/node_modules/relateurl/lib/util/path.js deleted file mode 100644 index f1e9d1193..000000000 --- a/node_modules/relateurl/lib/util/path.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; - -function joinPath(pathArray) -{ - if (pathArray.length > 0) - { - return pathArray.join("/") + "/"; - } - else - { - return ""; - } -} - - - -function resolveDotSegments(pathArray) -{ - var pathAbsolute = []; - - pathArray.forEach( function(dir) - { - if (dir !== "..") - { - if (dir !== ".") - { - pathAbsolute.push(dir); - } - } - else - { - // Remove parent - if (pathAbsolute.length > 0) - { - pathAbsolute.splice(pathAbsolute.length-1, 1); - } - } - }); - - return pathAbsolute; -} - - - -module.exports = -{ - join: joinPath, - resolveDotSegments: resolveDotSegments -}; diff --git a/node_modules/relateurl/license b/node_modules/relateurl/license deleted file mode 100644 index b760007ae..000000000 --- a/node_modules/relateurl/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Steven Vachon <contact@svachon.com> (svachon.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/relateurl/package.json b/node_modules/relateurl/package.json deleted file mode 100644 index f4b236a7e..000000000 --- a/node_modules/relateurl/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "relateurl", - "description": "Minify URLs by converting them from absolute to relative.", - "version": "0.2.7", - "license": "MIT", - "homepage": "https://github.com/stevenvachon/relateurl", - "author": { - "name": "Steven Vachon", - "email": "contact@svachon.com", - "url": "http://www.svachon.com/" - }, - "main": "lib", - "repository": { - "type": "git", - "url": "git://github.com/stevenvachon/relateurl.git" - }, - "bugs": { - "url": "https://github.com/stevenvachon/relateurl/issues" - }, - "devDependencies": { - "browserify": "^13.0.1", - "chai": "^3.5.0", - "mocha": "^2.5.3", - "uglify-js": "^2.7.0" - }, - "engines": { - "node": ">= 0.10" - }, - "scripts": { - "browserify": "browserify lib/ --standalone RelateUrl | uglifyjs --compress --mangle -o relateurl-browser.js", - "test": "mocha test/ --bail --reporter spec --check-leaks" - }, - "files": [ - "lib", - "license" - ], - "keywords": [ - "uri", - "url", - "minifier", - "minify", - "lint", - "relative", - "absolute" - ] -} |
