diff --git a/relateurl/relateurl-tests.ts b/relateurl/relateurl-tests.ts
new file mode 100644
index 0000000000..89a647d06e
--- /dev/null
+++ b/relateurl/relateurl-tests.ts
@@ -0,0 +1,20 @@
+///
+
+import * as RelateUrl from 'relateurl';
+
+var from = "http://www.domain.com/asdf/";
+var to = "http://www.domain.com/asdf/asdf";
+var to1 = "http://www.domain.com/asdf/asdf1";
+var to2 = "http://www.domain.com/asdf/asdf1";
+var to3 = "http://www.domain.com/asdf/asdf1";
+var options = {site: "http://www.domain.com/asdf2/"};
+var customOptions = {output: RelateUrl.ABSOLUTE};
+
+// Single Instance
+var result = RelateUrl.relate(from, to, options);
+
+// Reusable Instances
+var instance = new RelateUrl(from, options);
+var result1 = instance.relate(to1);
+var result2 = instance.relate(to2, customOptions);
+var result3 = instance.relate(to3);
diff --git a/relateurl/relateurl.d.ts b/relateurl/relateurl.d.ts
new file mode 100644
index 0000000000..9f24e59b9e
--- /dev/null
+++ b/relateurl/relateurl.d.ts
@@ -0,0 +1,125 @@
+// Type definitions for relateurl v0.2.6
+// Project: https://github.com/stevenvachon/relateurl
+// Definitions by: Tanguy Krotoff
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module 'relateurl' {
+ namespace RelateUrl {
+ interface Options {
+ /**
+ * 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/.
+ */
+ defaultPorts?: Object;
+
+ /**
+ * Type: Array
+ * Default value: ["index.html"]
+ *
+ * Extend the list with any resources you need. Works with options.removeDirectoryIndexes.
+ */
+ directoryIndexes?: Array;
+
+ /**
+ * 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/.
+ */
+ ignore_www?: boolean;
+
+ /**
+ * 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 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.
+ */
+ output?: string;
+
+ /**
+ * Type: Array
+ * Default value: ["data","javascript","mailto"]
+ *
+ * Extend the list with any additional schemes. Example: javascript:something will not be modified.
+ */
+ rejectedSchemes?: Array;
+
+ /**
+ * Type: Boolean
+ * Default value: false
+ *
+ * Remove user authentication information from the output URL.
+ */
+ removeAuth?: boolean;
+
+ /**
+ * Type: Boolean
+ * Default value: true
+ *
+ * Remove any resources that match any found in options.directoryIndexes.
+ */
+ removeDirectoryIndexes?: boolean;
+
+ /**
+ * 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).
+ */
+ removeEmptyQueries?: boolean;
+
+ /**
+ * 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.
+ */
+ removeRootTrailingSlash?: boolean;
+
+ /**
+ * Type: Boolean
+ * Default value: true
+ *
+ * Output URLs relative to the scheme. Example: http://example.com/ will become //example.com/.
+ */
+ schemeRelative?: boolean;
+
+ /**
+ * Type: String
+ * Default value: undefined
+ *
+ * An options-based version of the from argument. If both are specified, from takes priority.
+ */
+ site?: string;
+
+ /**
+ * Type: Boolean
+ * Default value: true
+ *
+ * Passed to Node's url.parse.
+ */
+ slashesDenoteHost?: boolean;
+ }
+ }
+
+ class RelateUrl {
+ static ABSOLUTE: string;
+ static PATH_RELATIVE: string;
+ static ROOT_RELATIVE: string;
+ static SHORTEST: string;
+
+ static relate(from: string, to: string, options?: RelateUrl.Options): string;
+
+ constructor(from: string, options?: RelateUrl.Options);
+ relate(to: string, options?: RelateUrl.Options): string;
+ }
+
+ export = RelateUrl;
+}