/usr/lib/nodejs/url-parse/fuzzy.js is in node-url-parse 1.0.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | 'use strict';
var URL = require('./')
, url = new URL('');
/**
* A dictionary with all kind of different options that should generate a valid
* and parse-able URL.
*
* @type {Object}
* @api private
*/
var combinations = {};
combinations.protocol = [
'http:',
'https:',
'ws:',
'wss:',
'blob:'/*,
''*/
];
combinations.username = ['foo', 'bar'];
combinations.password = combinations.username;
combinations.hostname = [
'example.com',
'www.example.com',
'travel.travel',
'sub.sub.sub.domain.nl',
'xn--n3h.com',
'localhost',
'127.0.0.1',
'255.255.255.255'/*,
'3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344',
'2001:2353::1428:57ab',
'2001:2353:0::0:1428:57ab',
'2001:2353:0:0:0:0:1428:57ab',
'2001:2353:0000:0000:0000::1428:57ab',
'2001:2353:0000:0000:0000:0000:1428:57ab',
'2001:2353:02de::0e13',
'2001:2353:2de::e13'*/
];
combinations.port = ['8080', '844', '3340'];
combinations.pathname = [
'/',
'/bar',
'/bar/',
'/foo/bar',
'/foo.bar/foo',
'/fav.ico',
'/@3rd-Eden',
'/a/b/c/d/e/f/g/j/1/d/4/'
];
combinations.query = ['foo=bar',
'foo[]=bar&foo[]=foo',
'email=foo@bar.travel',
'q='
];
combinations.hash = [
'name',
'moo-with-longer-name',
'/what/about/slashes?querystring',
'?querystring',
'!/google/urls',
'use:foo@',
'http://'
];
/**
* Get a random item from the given array.
*
* @param {String} name Name of the array we want to have a random item returned.
* @returns {Mixed}
* @api private
*/
function get(name) {
var data = combinations[name];
return data[Math.floor(Math.random() * data.length)];
}
/**
* Return a random boolean.
*
* @returns {Boolean}
* @api private
*/
function yep() {
return !!Math.round(Math.random() * 1);
}
/**
* Generate the actual URL.
*
* @returns {Object} specification
* @api public
*/
module.exports = function generate() {
var spec = {}
, key;
spec.protocol = get('protocol');
spec.hostname = get('hostname');
spec.pathname = get('pathname');
if (yep()) spec.port = get('port');
if (yep()) spec.query = '?'+ get('query');
if (yep()) spec.hash = '#'+ get('hash');
if (yep()) {
spec.username = get('username');
spec.password = get('password');
}
for (key in combinations) {
url[key] = '';
}
for (key in spec) {
url[key] = spec[key];
}
spec.href = url.toString();
return spec;
};
|