Galerie und tage
This commit is contained in:
3
node_modules/is-url/.travis.yml
generated
vendored
Normal file
3
node_modules/is-url/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 8
|
||||
25
node_modules/is-url/History.md
generated
vendored
Normal file
25
node_modules/is-url/History.md
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
1.2.0 - November 25, 2014
|
||||
-------------------------
|
||||
* add support for protocol relative urls
|
||||
|
||||
1.1.0 - February 8, 2013
|
||||
------------------------
|
||||
* support any protocol
|
||||
* support paths on localhost
|
||||
|
||||
1.0.0 - January 17, 2013
|
||||
------------------------
|
||||
* allow localhost to have a port
|
||||
|
||||
0.1.0 - September 8, 2013
|
||||
-------------------------
|
||||
* make regexp match more valid url types
|
||||
|
||||
0.0.2 - August 2, 2013
|
||||
----------------------
|
||||
* remove loose matching
|
||||
|
||||
0.0.1 - August 2, 2013
|
||||
----------------------
|
||||
:sparkles:
|
||||
19
node_modules/is-url/LICENSE-MIT
generated
vendored
Normal file
19
node_modules/is-url/LICENSE-MIT
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
MIT LICENSE
|
||||
|
||||
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.
|
||||
19
node_modules/is-url/Readme.md
generated
vendored
Normal file
19
node_modules/is-url/Readme.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# is-url
|
||||
|
||||
Check whether a string is a URL.
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
npm install is-url
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### `isUrl(string)`
|
||||
|
||||
Returns a Boolean indicating whether `string` is a URL.
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
47
node_modules/is-url/index.js
generated
vendored
Normal file
47
node_modules/is-url/index.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
/**
|
||||
* Expose `isUrl`.
|
||||
*/
|
||||
|
||||
module.exports = isUrl;
|
||||
|
||||
/**
|
||||
* RegExps.
|
||||
* A URL must match #1 and then at least one of #2/#3.
|
||||
* Use two levels of REs to avoid REDOS.
|
||||
*/
|
||||
|
||||
var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
|
||||
|
||||
var localhostDomainRE = /^localhost[\:?\d]*(?:[^\:?\d]\S*)?$/
|
||||
var nonLocalhostDomainRE = /^[^\s\.]+\.\S{2,}$/;
|
||||
|
||||
/**
|
||||
* Loosely validate a URL `string`.
|
||||
*
|
||||
* @param {String} string
|
||||
* @return {Boolean}
|
||||
*/
|
||||
|
||||
function isUrl(string){
|
||||
if (typeof string !== 'string') {
|
||||
return false;
|
||||
}
|
||||
|
||||
var match = string.match(protocolAndDomainRE);
|
||||
if (!match) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var everythingAfterProtocol = match[1];
|
||||
if (!everythingAfterProtocol) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (localhostDomainRE.test(everythingAfterProtocol) ||
|
||||
nonLocalhostDomainRE.test(everythingAfterProtocol)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
13
node_modules/is-url/package.json
generated
vendored
Normal file
13
node_modules/is-url/package.json
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "is-url",
|
||||
"description": "Check whether a string is a URL.",
|
||||
"repository": "https://github.com/segmentio/is-url",
|
||||
"version": "1.2.4",
|
||||
"scripts": {
|
||||
"test": "mocha --reporter spec"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
}
|
||||
}
|
||||
149
node_modules/is-url/test/index.js
generated
vendored
Normal file
149
node_modules/is-url/test/index.js
generated
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
|
||||
try {
|
||||
var url = require('is-url');
|
||||
} catch (e) {
|
||||
var url = require('..');
|
||||
}
|
||||
|
||||
var assert = require('assert');
|
||||
|
||||
describe('is-url', function () {
|
||||
describe('valid', function () {
|
||||
it('http://google.com', function () {
|
||||
assert(url('http://google.com'));
|
||||
});
|
||||
|
||||
it('https://google.com', function () {
|
||||
assert(url('https://google.com'));
|
||||
});
|
||||
|
||||
it('ftp://google.com', function () {
|
||||
assert(url('ftp://google.com'));
|
||||
});
|
||||
|
||||
it('http://www.google.com', function () {
|
||||
assert(url('http://www.google.com'));
|
||||
});
|
||||
|
||||
it('http://google.com/something', function () {
|
||||
assert(url('http://google.com/something'));
|
||||
});
|
||||
|
||||
it('http://google.com?q=query', function () {
|
||||
assert(url('http://google.com?q=query'));
|
||||
});
|
||||
|
||||
it('http://google.com#hash', function () {
|
||||
assert(url('http://google.com#hash'));
|
||||
});
|
||||
|
||||
it('http://google.com/something?q=query#hash', function () {
|
||||
assert(url('http://google.com/something?q=query#hash'));
|
||||
});
|
||||
|
||||
it('http://google.co.uk', function () {
|
||||
assert(url('http://google.co.uk'));
|
||||
});
|
||||
|
||||
it('http://www.google.co.uk', function () {
|
||||
assert(url('http://www.google.co.uk'));
|
||||
});
|
||||
|
||||
it('http://google.cat', function () {
|
||||
assert(url('http://google.cat'));
|
||||
});
|
||||
|
||||
it('https://d1f4470da51b49289906b3d6cbd65074@app.getsentry.com/13176', function () {
|
||||
assert(url('https://d1f4470da51b49289906b3d6cbd65074@app.getsentry.com/13176'));
|
||||
});
|
||||
|
||||
it('http://0.0.0.0', function () {
|
||||
assert(url('http://0.0.0.0'));
|
||||
});
|
||||
|
||||
it('http://localhost', function () {
|
||||
assert(url('http://localhost'));
|
||||
});
|
||||
|
||||
it('postgres://u:p@example.com:5702/db', function () {
|
||||
assert(url('postgres://u:p@example.com:5702/db'));
|
||||
});
|
||||
|
||||
it('redis://:123@174.129.42.52:13271', function () {
|
||||
assert(url('redis://:123@174.129.42.52:13271'));
|
||||
});
|
||||
|
||||
it('mongodb://u:p@example.com:10064/db', function () {
|
||||
assert(url('mongodb://u:p@example.com:10064/db'));
|
||||
});
|
||||
|
||||
it('ws://chat.example.com/games', function () {
|
||||
assert(url('ws://chat.example.com/games'));
|
||||
});
|
||||
|
||||
it('wss://secure.example.com/biz', function () {
|
||||
assert(url('wss://secure.example.com/biz'));
|
||||
});
|
||||
|
||||
it('http://localhost:4000', function () {
|
||||
assert(url('http://localhost:4000'));
|
||||
});
|
||||
|
||||
it('http://localhost:342/a/path', function () {
|
||||
assert(url('http://localhost:342/a/path'));
|
||||
});
|
||||
|
||||
it('//google.com', function () {
|
||||
assert(url('//google.com'));
|
||||
});
|
||||
});
|
||||
|
||||
describe('invalid', function () {
|
||||
it('http://', function () {
|
||||
assert(!url('http://'));
|
||||
});
|
||||
|
||||
it('http://google', function () {
|
||||
assert(!url('http://google'));
|
||||
});
|
||||
|
||||
it('http://google.', function () {
|
||||
assert(!url('http://google.'));
|
||||
});
|
||||
|
||||
it('google', function () {
|
||||
assert(!url('google'));
|
||||
});
|
||||
|
||||
it('google.com', function () {
|
||||
assert(!url('google.com'));
|
||||
});
|
||||
|
||||
it('empty', function () {
|
||||
assert(!url(''));
|
||||
});
|
||||
|
||||
it('undef', function () {
|
||||
assert(!url(undefined));
|
||||
});
|
||||
|
||||
it('object', function () {
|
||||
assert(!url({}));
|
||||
});
|
||||
|
||||
it('re', function () {
|
||||
assert(!url(/abc/));
|
||||
});
|
||||
});
|
||||
|
||||
describe('redos', function () {
|
||||
it('redos exploit', function () {
|
||||
// Invalid. This should be discovered in under 1 second.
|
||||
var attackString = 'a://localhost' + '9'.repeat(100000) + '\t';
|
||||
var before = process.hrtime();
|
||||
assert(!url(attackString), 'attackString was valid');
|
||||
var elapsed = process.hrtime(before);
|
||||
assert(elapsed[0] < 1, 'attackString took ' + elapsed[0] + ' > 1 seconds');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user