test(function() { var params = new URLSearchParams('a=1&a=2&a=3'); assert_true(params.has('a'), 'Search params object has name "a"'); assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"'); params.set('first', 4); assert_true(params.has('a'), 'Search params object has name "a"'); assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"'); params.set('a', 4); assert_true(params.has('a'), 'Search params object has name "a"'); assert_equals(params.get('a'), '4', 'Search params object has name "a" with value "4"'); }, 'URLSearchParams.set');
test(function() { var params = new URLSearchParams('a=b&c=d&&'); params.append('first', 1); params.append('first', 2); assert_true(params.has('a'), 'Search params object has name "a"'); assert_true(params.has('c'), 'Search params object has name "c"'); assert_true(params.has('first'), 'Search params object has name "first"'); assert_false(params.has('d'), 'Search params object has no name "d"'); params.delete('first'); assert_false(params.has('first'), 'Search params object has no name "first"'); }, 'has() following delete()');
test(function() { var params = new URLSearchParams(); params.append('first', 1); assert_true(params.has('first'), 'Search params object has name "first"'); assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"'); params.delete('first'); assert_false(params.has('first'), 'Search params object has no "first" name'); params.append('first', 1); params.append('first', 10); params.delete('first'); assert_false(params.has('first'), 'Search params object has no "first" name'); }, 'Deleting appended multiple');
test(function() { var seed = new URLSearchParams('a=b&c=d'); var params = new URLSearchParams(seed); assert_true(params != null, 'constructor returned non-null value.'); assert_equals(params.get('a'), 'b'); assert_equals(params.get('c'), 'd'); assert_false(params.has('d')); // The name-value pairs are copied when created; later updates // should not be observable. seed.append('e', 'f'); assert_false(params.has('e')); params.append('g', 'h'); assert_false(seed.has('g')); }, 'URLSearchParams constructor, object.');
function has(n, param) { const params = new URLSearchParams(str); bench.start(); for (var i = 0; i < n; i += 1) params.has(param); bench.end(n); }
test(function() { var params = new URLSearchParams('a=b'); assert_true(params != null, 'constructor returned non-null value.'); assert_true(params.has('a'), 'Search params object has name "a"'); assert_false(params.has('b'), 'Search params object has not got name "b"'); var params = new URLSearchParams('a=b&c'); assert_true(params != null, 'constructor returned non-null value.'); assert_true(params.has('a'), 'Search params object has name "a"'); assert_true(params.has('c'), 'Search params object has name "c"'); var params = new URLSearchParams('&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8'); assert_true(params != null, 'constructor returned non-null value.'); assert_true(params.has('a'), 'Search params object has name "a"'); assert_true(params.has('a b'), 'Search params object has name "a b"'); assert_true(params.has(' '), 'Search params object has name " "'); assert_false(params.has('c'), 'Search params object did not have the name "c"'); assert_true(params.has(' c'), 'Search params object has name " c"'); assert_true(params.has('møø'), 'Search params object has name "møø"'); }, 'URLSearchParams constructor, string.');
test(function() { var params = new URLSearchParams('a=1&a=2&a=3&a'); assert_true(params.has('a'), 'Search params object has name "a"'); var matches = params.getAll('a'); assert_true(matches && matches.length == 4, 'Search params object has values for name "a"'); assert_array_equals(matches, ['1', '2', '3', ''], 'Search params object has expected name "a" values'); params.set('a', 'one'); assert_equals(params.get('a'), 'one', 'Search params object has name "a" with value "one"'); var matches = params.getAll('a'); assert_true(matches && matches.length == 1, 'Search params object has values for name "a"'); assert_array_equals(matches, ['one'], 'Search params object has expected name "a" values'); }, 'getAll() multiples');
test(function() { var params = new URLSearchParams(); params.append('first', 1); params.append('second', 2); params.append('third', ''); params.append('first', 10); assert_true(params.has('first'), 'Search params object has name "first"'); assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"'); assert_equals(params.get('second'), '2', 'Search params object has name "second" with value "2"'); assert_equals(params.get('third'), '', 'Search params object has name "third" with value ""'); params.append('first', 10); assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"'); }, 'Append multiple');
test(function() { var params = new URLSearchParams('a=b&c=d'); assert_true(params.has('a')); assert_true(params.has('c')); assert_false(params.has('e')); params = new URLSearchParams('a=b&c=d&a=e'); assert_true(params.has('a')); params = new URLSearchParams('=b&c=d'); assert_true(params.has('')); params = new URLSearchParams('null=a'); assert_true(params.has(null)); }, 'Has basics');
function sendResponse(statusCode, data) { const headers = {'Access-Control-Allow-Origin': '*'}; if (filePath.endsWith('.js')) { headers['Content-Type'] = 'text/javascript'; } else if (filePath.endsWith('.css')) { headers['Content-Type'] = 'text/css'; } else if (filePath.endsWith('.svg')) { headers['Content-Type'] = 'image/svg+xml'; } else if (filePath.endsWith('.png')) { headers['Content-Type'] = 'image/png'; } else if (filePath.endsWith('.gif')) { headers['Content-Type'] = 'image/gif'; } else if (filePath.endsWith('.jpg') || filePath.endsWith('.jpeg')) { headers['Content-Type'] = 'image/jpeg'; } else if (filePath.endsWith('.webp')) { headers['Content-Type'] = 'image/webp'; } else if (filePath.endsWith('.json')) { headers['Content-Type'] = 'application/json'; } let delay = 0; let useGzip = false; if (queryString) { const params = new URLSearchParams(queryString); // set document status-code if (params.has('status_code')) { statusCode = parseInt(params.get('status_code'), 10); } // set delay of request when present if (params.has('delay')) { delay = parseInt(params.get('delay'), 10) || 2000; } if (params.has('extra_header')) { const extraHeaders = new URLSearchParams(params.get('extra_header')); for (const [headerName, headerValue] of extraHeaders) { if (HEADER_SAFELIST.has(headerName.toLowerCase())) { headers[headerName] = headers[headerName] || []; headers[headerName].push(headerValue); } } } if (params.has('gzip')) { useGzip = Boolean(params.get('gzip')); } // redirect url to new url if present if (params.has('redirect')) { return setTimeout(sendRedirect, delay, params.get('redirect')); } } if (useGzip) { data = zlib.gzipSync(data); headers['Content-Encoding'] = 'gzip'; } response.writeHead(statusCode, headers); // Delay the response if (delay > 0) { return setTimeout(finishResponse, delay, data); } finishResponse(data); }