aboutsummaryrefslogtreecommitdiff
path: root/node_modules/relateurl/lib/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/relateurl/lib/index.js')
-rw-r--r--node_modules/relateurl/lib/index.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/node_modules/relateurl/lib/index.js b/node_modules/relateurl/lib/index.js
new file mode 100644
index 000000000..714237d59
--- /dev/null
+++ b/node_modules/relateurl/lib/index.js
@@ -0,0 +1,94 @@
+"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;