• Stars
    star
    308
  • Rank 134,975 (Top 3 %)
  • Language
    JavaScript
  • Created almost 9 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A very small, fast, dependency free url parser and formatter for nodejs and the web

urlite

A very small, fast, dependency free url parser and formatter for nodejs and the web

  • fast
  • few lines of code
  • 100% test coverage

why is it so small and fast?

It extracts all url fragments in a single step using one massive regex

usage

npm install --save urlite

var url = require('urlite')

url.parse('http://user:[email protected]:3000/path?query=string#fragment')

{
  auth: 'user:pass',
  hash: '#fragment',
  hostname: 'blah.com',
  href: 'http://user:[email protected]:3000/path?query=string#fragment',
  path: '/path?query=string',
  pathname: '/path',
  port: '3000',
  protocol: 'http:',
  search: '?query=string'
}

var href = window.location.href
url.format(url.parse(href)) === href

Urlite extra

An extended version of urlite is available at urlite/extra. This includes helpful features such as querystring, hash and auth parsing:

// version of urlite with additional extras like querystring and auth parsing
var url = require('urlite/extra')
var parsed = url.parse('http://user:[email protected]:3000/path?a=b#c=d')
parsed.search // -> { a: "b" }
parsed.search.a = 'c'
parsed.hash // -> { c: "d" }
parsed.hash.c = 'e'
parsed.auth // -> { user: 'user', password: 'password' }
url.format(parsed) // -> 'http://user:[email protected]:3000/path?a=c#c=e'

comparison

File size:

NAME                    SIZE        SIZE (minified)
urlite                  3.02 kB     0.957 kB
urlparser               5.82 kB     1.57 kB
url-parse               12 kB       2.89 kB
url                     46.5 kB     11.8 kB
min-url                 25.6 kB     12.6 kB
fast-url-parser         55.2 kB     15 kB
url-parse-as-address    78.7 kB     22.7 kB
Performance:

require("urlite").parse             2,210,417 ops/sec ±0.90% (95 runs sampled)
require("fast-url-parser").parse    2,047,302 ops/sec ±0.89% (95 runs sampled)
require("urlparser").parse          631,561 ops/secs ±0.87% (92 runs sampled)
require("min-url").parse            343,680 ops/sec ±1.16% (93 runs sampled)
require("url-parse")                334,385 ops/sec ±1.03% (97 runs sampled)
require("url").parse                140,836 ops/sec ±1.26% (94 runs sampled)
require("url-parse-as-address")     135,691 ops/sec ±0.94% (95 runs sampled)

js-standard-style

Want to work on this for your day job?

This project was created by the Engineering team at Qubit. As we use open source libraries, we make our projects public where possible.

We’re currently looking to grow our team, so if you’re a JavaScript engineer and keen on ES2016 React+Redux applications and Node micro services, why not get in touch? Work with like minded engineers in an environment that has fantastic perks, including an annual ski trip, yoga, a competitive foosball league, and copious amounts of yogurt.

Find more details on our Engineering site. Don’t have an up to date CV? Just link us your Github profile! Better yet, send us a pull request that improves this project.` Contact GitHub API Training Shop Blog About

More Repositories

1

positions

A small dom element positioning lib inspired by jquery-ui/position
JavaScript
31
star
2

time-input

A keyboard friendly react component for capturing time
JavaScript
28
star
3

keyboard-keys

A CSS suite of computer keyboard keys
CSS
14
star
4

int-encoder

a simple utitlity to encode and decode ints from a predefined alphabet
JavaScript
14
star
5

backpocket

Simple time machine style incremental backups locally or over ssh
JavaScript
11
star
6

micro-amd

A tiny amd lib
JavaScript
6
star
7

parse-human-date

Parse a human textual description of a date, including relative times
JavaScript
6
star
8

maxz

Get the maximum zIndex on a page or from a list of elements
JavaScript
5
star
9

smurl

smart url matching
JavaScript
4
star
10

imageloader

JavaScript
4
star
11

ievms

Simple command line api for xdissent/ievms
JavaScript
3
star
12

fetch-js

Reliably fetch scripts and execute callbacks once evaluated
JavaScript
3
star
13

overlayer

A tiny animating overlay backdrop lib using css3 animations
JavaScript
2
star
14

speedsnitch

Simple lightweight nodejs profiling tool
JavaScript
2
star
15

winston-couchdb

a couchdb transport for the nodejs async logging library winston
JavaScript
1
star
16

github-stats

A script to summarise user stats on github
JavaScript
1
star
17

connerify

Translates words to sean connery style phonetical spelling
JavaScript
1
star
18

SimpleSelector

SimpleSelector $$() – JavaScript DOM selector
JavaScript
1
star
19

gossipper

Debug requests from the browser console
JavaScript
1
star
20

cashcow

cashcow is a smart cache fetcher that pools consumers and minimises memory usage
JavaScript
1
star
21

domready

shamelessly stripped the .ready event logic from jquery for use in projects without a jquery dependency. Just 431 bytes when minified and gzipped, or 1kb when minified.
JavaScript
1
star
22

after.js

adds support to ie6 & 7 to the :before and :after pseudo selectors
JavaScript
1
star
23

batch-stream-csv

Process large CSV files in batches without backpressure
JavaScript
1
star
24

grunt-requirejs-tasks

grunt plugin enabling developers to build their code using require.js's dependency management features
JavaScript
1
star
25

confirmer

Simple y/n prompt for the command line
JavaScript
1
star