Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
normalize-url
Advanced tools
The normalize-url npm package is used to normalize and sanitize URLs to ensure they have a standard and consistent format. It can be used to remove tracking parameters, sort query parameters, remove default ports, and more.
Normalizing URLs
This feature allows you to normalize a URL by converting it to a standard format. It can remove or add 'http://', sort query parameters, and convert the hostname to lowercase.
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('sindresorhus.com')); // Output: 'http://sindresorhus.com'
console.log(normalizeUrl('HTTP://xn--xample-hva.com:80/?b=bar&a=foo')); // Output: 'http://êxample.com/?a=foo&b=bar'"
Removing URL Tracking Parameters
This feature allows you to remove URL tracking parameters like 'utm_source' and 'utm_medium' by using a regular expression.
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('www.sindresorhus.com?utm_source=foo&utm_medium=bar', {removeQueryParameters: [/^utm_/]})); // Output: 'http://sindresorhus.com'"
Removing Default Ports
This feature removes the default ports from URLs (port 80 for HTTP and port 443 for HTTPS).
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('http://sindresorhus.com:80')); // Output: 'http://sindresorhus.com'
console.log(normalizeUrl('https://sindresorhus.com:443')); // Output: 'https://sindresorhus.com'"
Forcing HTTPS
This feature allows you to force the URL to use HTTPS instead of HTTP.
"use strict";
const normalizeUrl = require('normalize-url');
console.log(normalizeUrl('http://sindresorhus.com', {forceHttps: true})); // Output: 'https://sindresorhus.com'"
The url-parse package offers similar URL parsing and normalization functionalities. It provides a more detailed breakdown of URL components and allows manipulation of these components individually.
URI.js is a library for working with URLs. It includes URL manipulation and normalization features, but also offers more extensive options for working with URIs, such as resolving URIs, managing URI components, and building URIs from templates.
Normalize a URL
Useful when you need to display, store, deduplicate, sort, compare, etc, URLs.
$ npm install --save normalize-url
const normalizeUrl = require('normalize-url');
normalizeUrl('sindresorhus.com');
//=> 'http://sindresorhus.com'
normalizeUrl('HTTP://xn--xample-hva.com:80/?b=bar&a=foo');
//=> 'http://êxample.com/?a=foo&b=bar'
Type: String
URL to normalize.
Type: Boolean
Default: true
Prepend http:
to the URL if it's protocol-relative.
normalizeUrl('//sindresorhus.com:80/');
//=> 'http://sindresorhus.com'
normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false});
//=> '//sindresorhus.com'
Type: Boolean
Default: true
Remove the fragment at the end of the URL.
normalizeUrl('sindresorhus.com/about.html#contact');
//=> 'http://sindresorhus.com/about.html'
normalizeUrl('sindresorhus.com/about.html#contact', {stripFragment: false});
//=> 'http://sindresorhus.com/about.html#contact'
Type: Boolean
Default: true
Remove www.
from the URL.
normalizeUrl('http://www.sindresorhus.com/about.html#contact');
//=> 'http://sindresorhus.com/about.html#contact'
normalizeUrl('http://www.sindresorhus.com/about.html#contact', {stripWWW: false});
//=> 'http://www.sindresorhus.com/about.html#contact'
Type: Array<RegExp|String>
Default: [/^utm_\w+/i]
Remove query parameters that matches any of the provided strings or regexes.
normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', {
ignoredQueryParameters: ['ref']
});
//=> 'http://sindresorhus.com/?foo=bar'
MIT © Sindre Sorhus
FAQs
Normalize a URL
The npm package normalize-url receives a total of 4,984,211 weekly downloads. As such, normalize-url popularity was classified as popular.
We found that normalize-url demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.