Git Product home page Git Product logo

normalize-url's Introduction

normalize-url Coverage Status

Normalize a URL

Useful when you need to display, store, deduplicate, sort, compare, etc, URLs.

Note: This package does not do URL sanitization. Garbage in, garbage out. If you use this in a server context and accept URLs as user input, it's up to you to protect against invalid URLs, path traversal attacks, etc.

Install

npm install normalize-url

Usage

import normalizeUrl from 'normalize-url';

normalizeUrl('sindresorhus.com');
//=> 'http://sindresorhus.com'

normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo');
//=> 'http://sindresorhus.com/baz?a=foo&b=bar'

API

normalizeUrl(url, options?)

URLs with custom protocols are not normalized and just passed through by default. Supported protocols are: https, http, file, and data.

Human-friendly URLs with basic auth (for example, user:[email protected]) are not handled because basic auth conflicts with custom protocols. Basic auth URLs are also deprecated.

url

Type: string

URL to normalize, including data URL.

options

Type: object

defaultProtocol

Type: string
Default: 'http'
Values: 'https' | 'http'

normalizeProtocol

Type: boolean
Default: true

Prepend defaultProtocol to the URL if it's protocol-relative.

normalizeUrl('//sindresorhus.com');
//=> 'http://sindresorhus.com'

normalizeUrl('//sindresorhus.com', {normalizeProtocol: false});
//=> '//sindresorhus.com'
forceHttp

Type: boolean
Default: false

Normalize HTTPS to HTTP.

normalizeUrl('https://sindresorhus.com');
//=> 'https://sindresorhus.com'

normalizeUrl('https://sindresorhus.com', {forceHttp: true});
//=> 'http://sindresorhus.com'
forceHttps

Type: boolean
Default: false

Normalize HTTP to HTTPS.

normalizeUrl('http://sindresorhus.com');
//=> 'http://sindresorhus.com'

normalizeUrl('http://sindresorhus.com', {forceHttps: true});
//=> 'https://sindresorhus.com'

This option cannot be used with the forceHttp option at the same time.

stripAuthentication

Type: boolean
Default: true

Strip the authentication part of the URL.

normalizeUrl('https://user:[email protected]');
//=> 'https://sindresorhus.com'

normalizeUrl('https://user:[email protected]', {stripAuthentication: false});
//=> 'https://user:[email protected]'
stripHash

Type: boolean
Default: false

Strip the hash part of the URL.

normalizeUrl('sindresorhus.com/about.html#contact');
//=> 'http://sindresorhus.com/about.html#contact'

normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true});
//=> 'http://sindresorhus.com/about.html'
stripProtocol

Type: boolean
Default: false

Remove the protocol from the URL: http://sindresorhus.comsindresorhus.com.

It will only remove https:// and http:// protocols.

normalizeUrl('https://sindresorhus.com');
//=> 'https://sindresorhus.com'

normalizeUrl('https://sindresorhus.com', {stripProtocol: true});
//=> 'sindresorhus.com'
stripTextFragment

Type: boolean
Default: true

Strip the text fragment part of the URL.

Note: The text fragment will always be removed if the stripHash option is set to true, as the hash contains the text fragment.

normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello');
//=> 'http://sindresorhus.com/about.html#'

normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello');
//=> 'http://sindresorhus.com/about.html#section'

normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello', {stripTextFragment: false});
//=> 'http://sindresorhus.com/about.html#:~:text=hello'

normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello', {stripTextFragment: false});
//=> 'http://sindresorhus.com/about.html#section:~:text=hello'
stripWWW

Type: boolean
Default: true

Remove www. from the URL.

normalizeUrl('http://www.sindresorhus.com');
//=> 'http://sindresorhus.com'

normalizeUrl('http://www.sindresorhus.com', {stripWWW: false});
//=> 'http://www.sindresorhus.com'
removeQueryParameters

Type: Array<RegExp | string> | boolean
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', {
	removeQueryParameters: ['ref']
});
//=> 'http://sindresorhus.com/?foo=bar'

If a boolean is provided, true will remove all the query parameters.

normalizeUrl('www.sindresorhus.com?foo=bar', {
	removeQueryParameters: true
});
//=> 'http://sindresorhus.com'

false will not remove any query parameter.

normalizeUrl('www.sindresorhus.com?foo=bar&utm_medium=test&ref=test_ref', {
	removeQueryParameters: false
});
//=> 'http://www.sindresorhus.com/?foo=bar&ref=test_ref&utm_medium=test'
keepQueryParameters

Type: Array<RegExp | string>
Default: undefined

Keeps only query parameters that matches any of the provided strings or regexes.

Note: It overrides the removeQueryParameters option.

normalizeUrl('https://sindresorhus.com?foo=bar&ref=unicorn', {
	keepQueryParameters: ['ref']
});
//=> 'https://sindresorhus.com/?ref=unicorn'
removeTrailingSlash

Type: boolean
Default: true

Remove trailing slash.

Note: Trailing slash is always removed if the URL doesn't have a pathname unless the removeSingleSlash option is set to false.

normalizeUrl('http://sindresorhus.com/redirect/');
//=> 'http://sindresorhus.com/redirect'

normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false});
//=> 'http://sindresorhus.com/redirect/'

normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false});
//=> 'http://sindresorhus.com'
removeSingleSlash

Type: boolean
Default: true

Remove a sole / pathname in the output. This option is independent of removeTrailingSlash.

normalizeUrl('https://sindresorhus.com/');
//=> 'https://sindresorhus.com'

normalizeUrl('https://sindresorhus.com/', {removeSingleSlash: false});
//=> 'https://sindresorhus.com/'
removeDirectoryIndex

Type: boolean | Array<RegExp | string>
Default: false

Removes the default directory index file from path that matches any of the provided strings or regexes. When true, the regex /^index\.[a-z]+$/ is used.

normalizeUrl('www.sindresorhus.com/foo/default.php', {
	removeDirectoryIndex: [/^default\.[a-z]+$/]
});
//=> 'http://sindresorhus.com/foo'
removeExplicitPort

Type: boolean
Default: false

Removes an explicit port number from the URL.

Port 443 is always removed from HTTPS URLs and 80 is always removed from HTTP URLs regardless of this option.

normalizeUrl('sindresorhus.com:123', {
	removeExplicitPort: true
});
//=> 'http://sindresorhus.com'
sortQueryParameters

Type: boolean
Default: true

Sorts the query parameters alphabetically by key.

normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', {
	sortQueryParameters: false
});
//=> 'http://sindresorhus.com/?b=two&a=one&c=three'

Related

normalize-url's People

Contributors

badgerbadgerbadgerbadger avatar ben-eb avatar bendingbender avatar bitshadow avatar codeclown avatar fisker avatar gcox avatar iakgoog avatar ivansanchez avatar joual avatar kevva avatar kikobeats avatar ludofischer avatar mariosant avatar mathieumg avatar millette avatar oswaldosalazar avatar ozgurg avatar parthdesai93 avatar ratson avatar rendall avatar richienb avatar sarslanhan avatar shinnn avatar silverwind avatar simonjang avatar sindresorhus avatar szmarczak avatar trysound avatar venikman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

normalize-url's Issues

'/' should not be normalized to an empty string

'/' is no URL but normalize-url should be able to handle the file part of an URL.
So currently '/' gets normalized to an empty string which is not an acceped input of normalize-url.
Take this example which throws the error 'Invalid URL':

var normalize = require("normalize-url")

console.log(normalize(normalize('/')))

(https://runkit.com/embed/al73fsrj4bw0)

imo an empty string should normalize to an empty string.

SyntaxError: Invalid regular expression: invalid group specifier name

Hey, I'm getting this error here on iOS and macOS Safari:

SyntaxError: Invalid regular expression: invalid group specifier name

It comes from here:

// Remove duplicate slashes if not preceded by a protocol
if (urlObj.pathname) {
  urlObj.pathname = urlObj.pathname.replace(/(?<!https?:)\/{2,}/g, '/');
}

My code: https://github.com/muuvmuuv/portfolio/blob/master/src/elements/Link.jsx
Live error: https://portfolio-git-development.muuvmuuv.now.sh/

I am using version 5.x

[3.x] React Native: Creating URL objects is not supported yet.

This may be more of a react native issue than normalize-url, but the new 3.x package is not compatible with React Native. I'm getting the follow error:

screen shot 2018-06-05 at 3 35 22 pm

Is there a way to use a fallback to make this work, or do I need to just downgrade the package on native?

node v6.9.1 doesn't work

Doesn't work with node v6.9.1

Cannot read property 'keys' of undefined
at module.exports (/node_modules/normalize-url/index.js:79:44)

Syntax Error

options = {
	defaultProtocol: 'http:',
	normalizeProtocol: true,
	forceHttp: false,
	forceHttps: false,
	stripAuthentication: true,
	stripHash: false,
	stripWWW: true,
	removeQueryParameters: [/^utm_\w+/i],
	removeTrailingSlash: true,
	removeDirectoryIndex: false,
	sortQueryParameters: true,
	...options
};

What is it the string ...options? It is a cause if critical error in Edge browser. Can you remove it from the code?

Meow full url

var abs = function(url) {
    var alink = document.createElement('a');
    alink.setAttribute('href', url);
    return alink.href;
};

abs('MeowMeow');
// "https://github.com/sindresorhus/normalize-url/issues/MeowMeow"

[3.x] Incompatible with Microsoft Edge

When I invoke normalizeUrl(...) on Microsoft edge, I get the following error:

TypeError: Unable to get property 'keys' of undefined or null reference

I believe this is caused by the following line:

for (const key of [...urlObj.searchParams.keys()]) {

Downgrading to 2.0.1 is my temporary work-around for the issue.

Exactly 2 forward slashes between the host+port & path is not normalizing to 1 forward slash

You can see it by adding the following test cases:

t.is(normalizeUrl('http://sindresorhus.com:5000///foo'), 'http://sindresorhus.com:5000/foo'); // passes
t.is(normalizeUrl('http://sindresorhus.com///foo'), 'http://sindresorhus.com/foo'); // passes
t.is(normalizeUrl('http://sindresorhus.com:5000//foo'), 'http://sindresorhus.com:5000/foo'); // fails - http://sindresorhus.com:5000//foo
t.is(normalizeUrl('http://sindresorhus.com//foo'), 'http://sindresorhus.com/foo'); // fails - http://sindresorhus.com//foo

Semicolons are erroneously encoded in query params

Hey,

I've had a user report the following normalization:

normalize('https://my.otrs.dom/index.pl?Action=AgentTicketZoom;TicketID=707128') == 'https://my.otrs.dom/index.pl?Action=AgentTicketZoom%3BTicketID%3D707128'

...which according to the user didn't preserve the semantics of the URL.

Checking the RFC, it appears that ; and = are part of the sub-delims non-terminal which defines a section of reserved characters that should not be encoded.

Am I missing something?

Add `url` as optional dependency?

This library depends on url on some environments, but it's not listed as optional dependency. IMO it should list it.

Why libraries should state optional dependencies?

  1. to avoid confusion when trying to use the library
  2. so user will know the correct dependency version library works with

Please add it

[3.0.0] URL is not a constructor

I upgraded from the previous 2.x to 3.0.0 and started getting errors in my app:

import normalizeUrl from 'normalize-url';
normalizeUrl(...);

Error:

URL is not a constructor

Normalize encoding

file:///foo/node_modules/@angular/http and file:///foo/node_modules/%40angular/http are equivalent, but encodeURI or decodeURI will do nothing to @ or %40, while encodeURIComponent/decodeURIComponent will do. When for example saving URLs in a Map it is very important to always save and get a normalized form, it would be awesome if this module supported this.

Optional fragment optimisation

http://website.com/images/myvector.svg#identifier

In this case the fragment is needed to point to the correct identifier inside the SVG file. Would you accept a PR for this (options.normalizeFragment or options.stripFragment)?

Keep stripFragment while support AngularJS sites

some sites implemented with AngularJS have routes like this:

http://www.example.com/#/page1
http://www.example.com/#/page2

They are two different addresses, but will be normalized to one same url.
I can set the stripFragment to false, but urls like

http://www.example.com/bar.html#section1
http://www.example.com/bar.html#section2

will treated as two different urls.

Can both situation be satisfied at the same time?

unescape fallback ?

I've run normalize-url over number of urls - some of them older date. "Age" is of relevance since many of them include url escaped titles.

Such URL-s that contain (non utf-8) escaped characters fail with URI malformed - being (mostly) in fact valid URLs.

So I wrap normalize-url with try... catch and rerun normalize-url with normalizeUrl(unescape(urlstring)).

While this work around works well, it would be nice to have option like unescapeFallback (default false wouldn't change existing behavior) that would try to use unescape instead of decodeURI when decodeURI fails (non UTF-8 chacacters).

Don't remove slash from protocol string

I detected that the library internally is removing duplicate slashes:

https://github.com/sindresorhus/normalize-url/blob/master/index.js#L42

Some urls need to pass another url as argument (for example, when you use a HTTPS Proxy)

Current behavior

 node
> const normalizeUrl = require('normalize-url')
undefined
> normalizeUrl('https://foo.com/https://bar.com')
'https://foo.com/https:/bar.com' // not resoluble url :(

Expected behavior

 node
> const normalizeUrl = require('normalize-url')
undefined
> normalizeUrl('https://foo.com/https://bar.com')
'https://foo.com/https://bar.com'  // 🙌

Build error since 2.0

Hey,

I've got this build error since upgrading to 2.0:

ERROR in client/vendors.d55dcbf0858efaced2d1.js from UglifyJs
    Unexpected token: operator (>) [/root/code/node_modules/normalize-url/index.js:29,0][client/vendors.d55dcbf0858efaced2d1.js:32802,29]

Downgrading to 1.9.1 for now.

Thanks anyways for this awesome lib!

Normalize to HTTPS protocol

We don't have any option to get https... protocol if we didn't pass it. Only if your inout will start with https://example.com you could get output with https. Also I want to discuss about making it default to support security in web, so people still use unsafety way they will have to do more setup, by that way we will force them to use https .

Make WEB safe again.

make trimming prefix www. optional

Blindly assuming the canonical version of www.example.com and example.com was example.com is not necessarily true for all hosts: Sometimes it's just the other way around, and sometimes the zone apex doesn't even resolve.

Can we make this feature optional?

homograph attack prevention by toASCII option

I am using quill-magic-url which uses normalize-url (and lets me pass in options through to it).

I am trying to figure out the best way in this setup to prevent homograph attack where a bad user enters something that looks like http://ebаy.com (hover over) but is actually linking to equivalent IDN (punycode): http://xn--eby-7cd.com
https://blog.blazeinfosec.com/what-you-see-is-not-what-you-get-when-homographs-attack/

I believe it might be ideal if the browser safe version of normalize-url optionally converted url to ascii format to prevent this.

import punycode from "punycode";
...
if(toASCII) {
punycode.toASCII(url);
}

Thoughts?

Normalize-url breaks Angular app in IE11

Hello!

I have an angular app that uses normalize-url as a dependency. When i try to build app as ES5 and open the app with IE11 it is getting crashed 'cuz of syntax error. The error is in this line - IE doesn't like arrow functions:

return filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);

Is there any way to get normalize-url compiled to ES5 properly?

Thanks in advance!

URL is not defined error

with a fresh plain test.js


const normalizeUrl = require("normalize-url");
main();
function main(){
 let url = 'doctify.co.uk';
 website = normalizeUrl(url);
 console.log(website);
}
        const urlObj = new URL(urlString);
                       ^

ReferenceError: URL is not defined
    at normalizeUrl (/home/xxx/Dropbox/Node/Dealwatch/node_modules/normalize-url/index.js:93:17)
    at main (/home/xxx/Dropbox/Node/Dealwatch/test.js:6:12)
    at Object.<anonymous> (/home/xxx/Dropbox/Node/Dealwatch/test.js:3:1)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)

Make protocol-relative URLs & www trimming optional?

Would you be open to supporting an options object that could ignore these parameters?

var url = '//www.domain.com/example.png';
console.log(normalize(url, { keepProtocol: true });
// => //domain.com/example.png
var url = '//www.domain.com/example.png';
console.log(normalize(url, { keepWww: true });
// => http://www.domain.com/example.png

I'd like to use this module (with the PR I submitted) to normalise URLs, but I don't want to change their semantics. I'm happy to send a PR for this if you think its a good addition.

edit: ... should really check the issues tracker (#2) before posting an issue. But for my use case I would like to be able to keep the semantics of the URL as much as possible. // is not the same as http://.

Stripping www is optional

This module looks great, nice and light weight. It would be nice, in my opinion, if the stripping of the ‘www’ was optional. A stripWWWoption could be added.

'+' gets turned into a space

For example:

> const norm = require('normalize-url');
> norm('https://www.google.com/search?q=a+number+of+boring+things');
'https://google.com/search?q=a number of boring things'

Not sure what you want to do with this, but it tends to confuse parsers.

TypeError: URLParser is not a constructor in Node 6.12.2

The normalization function (version 3.1.0) does not work with node 6.12.2

The problem seems to be at the line:

const URLParser = typeof URL === 'undefined' ? require('url').URL : URL;

My guess is that it needs to be:

const URLParser = typeof URL === 'undefined' ? require('url').parse : URL;

Here's a sample how to reproduce the issues:

$ nvm install 6.12.2

$ nvm exec 6.12.2 node
Running node v6.12.2 (npm v3.10.10)

> norm = require('normalize-url')
[Function]

> norm('http://example.com/some/path')
TypeError: URLParser is not a constructor
    at module.exports (/Users/jdoe/workspace/node_modules/normalize-url/index.js:32:17)
    at repl:1:1
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:73:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:340:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:539:10)
    at emitOne (events.js:101:20)

> require('./node_modules/normalize-url/package').version
'3.1.0'

partially decoded special chars in query params

'https://example.com?tint=%23505050,%23505050' is normalised to 'https://example.com/?tint=%23505050,#505050'. Note that only one of the entities is decoded. I'm not even sure that the entities should be decoded here - what's the justification for that?

Normalize data URLs

Issuehunt badges

See the feedback in #84.


Note: This issue has a bounty, so it's expected that you are an experienced programmer and that you give it your best effort. Don't forget, if applicable, to add tests, docs (double-check for typos), and update TypeScript definitions. Instead of asking too many questions, present solutions. The point of an issue bounty is to reduce my workload, not give me more. Thanks for helping out 🙌


IssueHunt Summary

fisker fisker has been rewarded.

Backers (Total: $40.00)

Submitted pull Requests


Tips


IssueHunt has been backed by the following sponsors. Become a sponsor

Error in production build

Hello!

In the new version 2.0.0 there occurs an error while production build.

Error:
ERROR in bundle-24382f917c9c63d5d406.js from UglifyJs Unexpected token: operator (>) [./node_modules/normalize-url/index.js:29,0][bundle-24382f917c9c63d5d406.js:117649,29]

Using:
"webpack": "^3.10.0"

Any ideas how should I fix this, instead of downgrading?

Thanks

Crash for some urls

normalizeUrl('http://tieba.baidu.com/f?kw=%C3%C0%CE%C4')

URIError: URI malformed
    at decodeURIComponent (native)
    at /node_modules/query-string/index.js:43:36
    at Array.forEach (native)
    at Object.exports.parse (/node_modules/query-string/index.js:32:17)
    at module.exports (/node_modules/normalize-url/index.js:104:36)
    at repl:1:1
    at REPLServer.defaultEval (repl.js:252:27)
    at bound (domain.js:287:14)
    at REPLServer.runBound [as eval] (domain.js:300:12)
    at REPLServer.<anonymous> (repl.js:417:12)

I've found the reason:
%C3%C0%CE%C4 is GB2312 not UTF-8

Maybe you can change

val = val === undefined ? null : decodeURIComponent(val);

to

val = val === undefined ? null : val;

I don't think you really need to decode the value in order to normalize url.

removeDirectoryIndex option interacts poorly with removeTrailingSlash option

The removeDirectoryIndex option appends a trailing slash, defeating the purpose of the removeTrailingSlash option.

For example, if remoteTrailingSlash==true and removeDirectoryIndex==true, the input http://sindresorhus.com/path/ is normalized to http://sindresorhus.com/path//, while the input http://sindresorhus.com/path/index.html would be normalized to http://sindresorhus.com/path/.

I'll send a pull request with a test and a fix.

Error in MS Edge ("Security Problem")

First of all, sorry If this was "reported" or "asked" before, however I've been facing the following issue on MS Edge (note that Chrome, Firefox and Safari are all working just fine), and I'm unable to resolve it.

normalize-url-bug-1

More specifically it errors out on the following line:

normalize-url-bug-2

Steps to reproduce:

run create-react-app my-new-app-name
then npm install --save normalize-url

Then simply try normalizeUrl("www.google.com") in the App component (or anywhere for that matter). Works fine everywhere except MS Edge (v. 42.17134.1.0).

I apologize if this is something silly and obvious (like adding a polyfill of some sorts). Just for the record, after some desperate googling, I've tried adding url-polyfill and babel-polyfill and importing them in the app:

import "url-polyfill";
import "babel-polyfill";

Didn't really help.

Any help is highly appreciated.

throws "Cannot call method 'replace' of null"

There seems to be runtime error when using urls on format "protocol://host"

n('custom://foo')
TypeError: Cannot call method 'replace' of null
at module.exports (/test/node_modules/normalize-url/index.js:49:36)
at repl:1:2
at REPLServer.self.eval (repl.js:110:21)
at Interface. (repl.js:239:12)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
at ReadStream.EventEmitter.emit (events.js:98:17)

Would expect it to manage to normalize this type of url or fail in a more controlled fashion?

'Reflect' is undefined

I recently upgraded to the latest version of normalize-url but ran into an issue when supporting IE. Reflect is not supported by IE.

There is a comment for a TODO to remove the Reflect checks.

  1. Is there a reason they have not been removed yet?
  2. Do they still need to be there?
  3. If they still need to be there, can they be replaced with:
if ('normalizeHttps' in options)) {
  throw new Error('options.normalizeHttps is renamed to options.forceHttp');
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.