Socket
Socket
Sign inDemoInstall

relateurl

Package Overview
Dependencies
0
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.3 to 0.2.4

6

lib/index.js

@@ -25,2 +25,3 @@ "use strict";

schemeRelative: true,
site: undefined,
slashesDenoteHost: true

@@ -54,2 +55,3 @@ });

options = getOptions(options, this.options);
from = from || options.site;
from = parseUrl.from(from, options, this.from);

@@ -83,5 +85,3 @@

{
var instance = new RelateUrl(from, options);
return instance.relate(to);
return new RelateUrl().relate(from, to, options);
}

@@ -88,0 +88,0 @@

{
"name": "relateurl",
"description": "Minify URLs by converting them from absolute to relative.",
"version": "0.2.3",
"version": "0.2.4",
"homepage": "https://github.com/stevenvachon/relateurl",

@@ -6,0 +6,0 @@ "author": {

@@ -85,2 +85,8 @@ # relateurl [![NPM Version](http://badge.fury.io/js/relateurl.svg)](http://badge.fury.io/js/relateurl) [![Build Status](https://secure.travis-ci.org/stevenvachon/relateurl.svg)](http://travis-ci.org/stevenvachon/relateurl)

#### 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

@@ -123,2 +129,3 @@ Type: `Boolean`

## Release History
* 0.2.4 added `options.site`
* 0.2.3 added browserify npm-script

@@ -131,4 +138,4 @@ * 0.2.2 removed task runner

## Roadmap
* 0.2.4 shorten absolute URLs like `http://domain.com/?var` to `http://domain.com?var`, etc
* 0.2.5 decipher and return invalid input (special cases) to complete test suite
* 0.2.5 shorten absolute URLs like `http://domain.com/?var` to `http://domain.com?var`, etc
* 0.2.6 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

@@ -135,0 +142,0 @@

@@ -10,199 +10,490 @@ var expect = require("chai").expect;

describe("Default and overriding options", function()
describe("API variations", function()
{
after( function()
describe("of arguments", function()
{
console.log(" (Processed "+urlCount+" URLs)");
});
it("should work with reusable instances", function(done)
{
var data,urls,instance;
data =
var data =
{
site: "http://www.domain.com/asdf/",
href: "http://www.domain.com/asdf/asdf",
expected_ABSOLUTE: "http://www.domain.com/asdf/asdf",
expected_ROOT_RELATIVE: "/asdf/asdf",
expected_SHORTEST: "asdf"
site: "http://www.domain.com/asdf/",
href: "http://www.domain.com/asdf/asdf",
expect_site: "asdf",
expect_options_site: "/asdf/asdf",
options: {site:"http://www.domain.com/asdf2/"}
};
// Test 1
instance = new RelateUrl(data.site);
describe("in reusable instances", function()
{
it("should support: new RelateUrl(from,options).relate(from,to,options)", function(done)
{
var result = new RelateUrl(data.site, data.options).relate(data.site, data.href, data.options);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(from,options).relate(from,to)", function(done)
{
var result = new RelateUrl(data.site, data.options).relate(data.site, data.href);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(from,options).relate(to,options)", function(done)
{
var result = new RelateUrl(data.site, data.options).relate(data.href, data.options);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should support: new RelateUrl(from,options).relate(to)", function(done)
{
var result = new RelateUrl(data.site, data.options).relate(data.href);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should support: new RelateUrl(from).relate(from,to,options)", function(done)
{
var result = new RelateUrl(data.site).relate(data.site, data.href, data.options);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(from).relate(from,to)", function(done)
{
var result = new RelateUrl(data.site).relate(data.site, data.href);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(from).relate(to,options)", function(done)
{
var result = new RelateUrl(data.site).relate(data.href, data.options);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should support: new RelateUrl(from).relate(to)", function(done)
{
var result = new RelateUrl(data.site).relate(data.href);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(null,options).relate(from,to,options)", function(done)
{
var result = new RelateUrl(null, data.options).relate(data.site, data.href, data.options);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(null,options).relate(from,to)", function(done)
{
var result = new RelateUrl(null, data.options).relate(data.site, data.href);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl(null,options).relate(to,options)", function(done)
{
var result = new RelateUrl(null, data.options).relate(data.href, data.options);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should support: new RelateUrl(null,options).relate(to)", function(done)
{
var result = new RelateUrl(null, data.options).relate(data.href);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should support: new RelateUrl().relate(from,to,options)", function(done)
{
var result = new RelateUrl().relate(data.site, data.href, data.options);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: new RelateUrl().relate(from,to)", function(done)
{
var result = new RelateUrl().relate(data.href, data.options);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should support: new RelateUrl().relate(to,options)", function(done)
{
var result = new RelateUrl().relate(data.href, data.options);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should not support: new RelateUrl(from,options).relate(options)", function(done)
{
var result,error;
try{ result=new RelateUrl(data.site,data.options).relate(data.options) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl(from,options).relate()", function(done)
{
var result,error;
try{ result=new RelateUrl(data.site,data.options).relate() }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl(null,options).relate(options)", function(done)
{
var result,error;
try{ result=new RelateUrl(null,data.options).relate(data.options) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl(null,options).relate()", function(done)
{
var result,error;
try{ result=new RelateUrl(null,data.options).relate() }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl(from).relate(options)", function(done)
{
var result,error;
try{ result=new RelateUrl(data.site).relate(data.options) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl(from).relate()", function(done)
{
var result,error;
try{ result=new RelateUrl(data.site).relate() }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl().relate(to)", function(done)
{
var result,error;
try{ result=new RelateUrl().relate(data.href) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl().relate(options)", function(done)
{
var result,error;
try{ result=new RelateUrl().relate(data.options) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: new RelateUrl().relate()", function(done)
{
var result,error;
try{ result=new RelateUrl().relate() }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
});
urls =
[
instance.relate(data.href, {output:RelateUrl.ABSOLUTE}),
instance.relate(data.site, data.href, {output:RelateUrl.ROOT_RELATIVE}),
instance.relate(data.href),
instance.relate(data.site, data.href)
];
describe("in single-use instances", function()
{
it("should support: RelateUrl.relate(from,to,options)", function(done)
{
var result = RelateUrl.relate(data.site, data.href, data.options);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: RelateUrl.relate(from,to)", function(done)
{
var result = RelateUrl.relate(data.site, data.href);
expect(result).to.equal(data.expect_site);
done();
});
it("should support: RelateUrl.relate(to,options)", function(done)
{
var result = RelateUrl.relate(data.href, data.options);
expect(result).to.equal(data.expect_options_site);
done();
});
it("should not support: RelateUrl.relate(from)", function(done)
{
var result,error;
try{ result=new RelateUrl.relate(data.site) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: RelateUrl.relate(options)", function(done)
{
var result,error;
try{ result=new RelateUrl.relate(data.options) }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
it("should not support: RelateUrl.relate()", function(done)
{
var result,error;
try{ result=new RelateUrl.relate() }
catch(err){ error=err }
expect(result).to.be.undefined;
expect(error).to.be.an.instanceof(Error);
done();
});
});
});
expect(urls[0]).to.equal(data.expected_ABSOLUTE);
expect(urls[1]).to.equal(data.expected_ROOT_RELATIVE);
expect(urls[2]).to.equal(data.expected_SHORTEST);
expect(urls[3]).to.equal(data.expected_SHORTEST);
describe("of options", function()
{
after( function()
{
console.log(" (Processed "+urlCount+" URLs)");
});
// Test 2
instance = new RelateUrl(data.site, {output:RelateUrl.ROOT_RELATIVE});
urls =
[
instance.relate(data.href, {output:RelateUrl.ABSOLUTE}),
instance.relate(data.site, data.href, {output:RelateUrl.SHORTEST}),
instance.relate(data.href),
instance.relate(data.site, data.href)
];
expect(urls[0]).to.equal(data.expected_ABSOLUTE);
expect(urls[1]).to.equal(data.expected_SHORTEST);
expect(urls[2]).to.equal(data.expected_ROOT_RELATIVE);
expect(urls[3]).to.equal(data.expected_ROOT_RELATIVE);
it("should work with reusable instances", function(done)
{
var data,urls,instance;
data =
{
site: "http://www.domain.com/asdf/",
href: "http://www.domain.com/asdf/asdf",
expected_ABSOLUTE: "http://www.domain.com/asdf/asdf",
expected_ROOT_RELATIVE: "/asdf/asdf",
expected_SHORTEST: "asdf"
};
// Test 1
instance = new RelateUrl(data.site);
urls =
[
instance.relate(data.href, {output:RelateUrl.ABSOLUTE}),
instance.relate(data.site, data.href, {output:RelateUrl.ROOT_RELATIVE}),
instance.relate(data.href),
instance.relate(data.site, data.href)
];
expect(urls[0]).to.equal(data.expected_ABSOLUTE);
expect(urls[1]).to.equal(data.expected_ROOT_RELATIVE);
expect(urls[2]).to.equal(data.expected_SHORTEST);
expect(urls[3]).to.equal(data.expected_SHORTEST);
// Test 2
instance = new RelateUrl(data.site, {output:RelateUrl.ROOT_RELATIVE});
urls =
[
instance.relate(data.href, {output:RelateUrl.ABSOLUTE}),
instance.relate(data.site, data.href, {output:RelateUrl.SHORTEST}),
instance.relate(data.href),
instance.relate(data.site, data.href)
];
expect(urls[0]).to.equal(data.expected_ABSOLUTE);
expect(urls[1]).to.equal(data.expected_SHORTEST);
expect(urls[2]).to.equal(data.expected_ROOT_RELATIVE);
expect(urls[3]).to.equal(data.expected_ROOT_RELATIVE);
urlCount += 6; // including sites
done();
});
urlCount += 6; // including sites
done();
});
it("should work with single-use instances", function(done)
{
var data =
it("should work with single-use instances", function(done)
{
site: "http://www.domain.com/asdf/",
href: "http://www.domain.com/asdf/asdf",
expected_ABSOLUTE: "http://www.domain.com/asdf/asdf",
expected_ROOT_RELATIVE: "/asdf/asdf",
expected_SHORTEST: "asdf"
};
var data =
{
site: "http://www.domain.com/asdf/",
href: "http://www.domain.com/asdf/asdf",
expected_ABSOLUTE: "http://www.domain.com/asdf/asdf",
expected_ROOT_RELATIVE: "/asdf/asdf",
expected_SHORTEST: "asdf"
};
var urls =
[
RelateUrl.relate(data.site, data.href, {output:RelateUrl.ABSOLUTE}),
RelateUrl.relate(data.site, data.href, {output:RelateUrl.ROOT_RELATIVE}),
RelateUrl.relate(data.site, data.href),
RelateUrl.relate(data.site, data.href)
];
expect(urls[0]).to.equal(data.expected_ABSOLUTE);
expect(urls[1]).to.equal(data.expected_ROOT_RELATIVE);
expect(urls[2]).to.equal(data.expected_SHORTEST);
expect(urls[3]).to.equal(data.expected_SHORTEST);
urlCount += 8; // including sites
done();
});
var urls =
[
RelateUrl.relate(data.site, data.href, {output:RelateUrl.ABSOLUTE}),
RelateUrl.relate(data.site, data.href, {output:RelateUrl.ROOT_RELATIVE}),
RelateUrl.relate(data.site, data.href),
RelateUrl.relate(data.site, data.href)
];
expect(urls[0]).to.equal(data.expected_ABSOLUTE);
expect(urls[1]).to.equal(data.expected_ROOT_RELATIVE);
expect(urls[2]).to.equal(data.expected_SHORTEST);
expect(urls[3]).to.equal(data.expected_SHORTEST);
urlCount += 8; // including sites
done();
});
it("should support options.defaultPorts", function(done)
{
urlCount += process( data["options.defaultPorts"], true,
it("should support options.defaultPorts", function(done)
{
defaultPorts: {sftp:22, ssh:22}
urlCount += process( data["options.defaultPorts"], true,
{
defaultPorts: {sftp:22, ssh:22}
});
done();
});
done();
});
it("should support options.directoryIndexes", function(done)
{
urlCount += process( data["options.directoryIndexes"], true,
it("should support options.directoryIndexes", function(done)
{
directoryIndexes: ["default.html"]
urlCount += process( data["options.directoryIndexes"], true,
{
directoryIndexes: ["default.html"]
});
done();
});
done();
});
it("should support options.ignore_www = true", function(done)
{
urlCount += process( data["options.ignore_www"], true,
it("should support options.ignore_www = true", function(done)
{
ignore_www: true
urlCount += process( data["options.ignore_www"], true,
{
ignore_www: true
});
done();
});
done();
});
it("should support options.rejectedSchemes", function(done)
{
urlCount += process( data["options.rejectedSchemes"], true,
it("should support options.rejectedSchemes", function(done)
{
rejectedSchemes: ["dunno"]
urlCount += process( data["options.rejectedSchemes"], true,
{
rejectedSchemes: ["dunno"]
});
done();
});
done();
});
it("should support options.removeAuth = true", function(done)
{
urlCount += process( data["options.removeAuth"], true,
it("should support options.removeAuth = true", function(done)
{
removeAuth: true
urlCount += process( data["options.removeAuth"], true,
{
removeAuth: true
});
done();
});
done();
});
it("should support options.removeDirectoryIndexes = false", function(done)
{
urlCount += process( data["options.removeDirectoryIndexes"], true,
it("should support options.removeDirectoryIndexes = false", function(done)
{
removeDirectoryIndexes: false
urlCount += process( data["options.removeDirectoryIndexes"], true,
{
removeDirectoryIndexes: false
});
done();
});
done();
});
it("should support options.removeEmptyQueries = true", function(done)
{
urlCount += process( data["options.removeEmptyQueries"], true,
it("should support options.removeEmptyQueries = true", function(done)
{
removeEmptyQueries: true
urlCount += process( data["options.removeEmptyQueries"], true,
{
removeEmptyQueries: true
});
done();
});
done();
});
it("should support options.schemeRelative = false", function(done)
{
urlCount += process( data["options.schemeRelative"], true,
it("should support options.schemeRelative = false", function(done)
{
schemeRelative: false
urlCount += process( data["options.schemeRelative"], true,
{
schemeRelative: false
});
done();
});
done();
});
it.skip("should support options.slashesDenoteHost = false", function(done)
{
urlCount += process( data["options.slashesDenoteHost"], true,
it.skip("should support options.slashesDenoteHost = false", function(done)
{
slashesDenoteHost: false
urlCount += process( data["options.slashesDenoteHost"], true,
{
slashesDenoteHost: false
});
done();
});
done();
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc