160 lines
7.0 KiB
Markdown
160 lines
7.0 KiB
Markdown
|
||
# parse-url
|
||
|
||
[![Support me on Patreon][badge_patreon]][patreon] [![Buy me a book][badge_amazon]][amazon] [![PayPal][badge_paypal_donate]][paypal-donations] [](https://travis-ci.org/IonicaBizau/parse-url/) [](https://www.npmjs.com/package/parse-url) [](https://www.npmjs.com/package/parse-url)
|
||
|
||
> An advanced url parser supporting git urls too.
|
||
|
||
## :cloud: Installation
|
||
|
||
```sh
|
||
$ npm i --save parse-url
|
||
```
|
||
|
||
|
||
## :clipboard: Example
|
||
|
||
|
||
|
||
```js
|
||
// Dependencies
|
||
const parseUrl = require("parse-url");
|
||
|
||
console.log(parseUrl("http://ionicabizau.net/blog"));
|
||
// { protocols: [ 'http' ],
|
||
// protocol: 'http',
|
||
// port: null,
|
||
// resource: 'ionicabizau.net',
|
||
// user: '',
|
||
// pathname: '/blog',
|
||
// hash: '',
|
||
// search: '',
|
||
// href: 'http://ionicabizau.net/blog' }
|
||
|
||
console.log(parseUrl("http://domain.com/path/name?foo=bar&bar=42#some-hash"));
|
||
// { protocols: [ 'http' ],
|
||
// protocol: 'http',
|
||
// port: null,
|
||
// resource: 'domain.com',
|
||
// user: '',
|
||
// pathname: '/path/name',
|
||
// hash: 'some-hash',
|
||
// search: 'foo=bar&bar=42',
|
||
// href: 'http://domain.com/path/name?foo=bar&bar=42#some-hash' }
|
||
|
||
console.log(parseUrl("git+ssh://git@host.xz/path/name.git"));
|
||
// { protocols: [ 'git', 'ssh' ],
|
||
// protocol: 'git',
|
||
// port: null,
|
||
// resource: 'host.xz',
|
||
// user: 'git',
|
||
// pathname: '/path/name.git',
|
||
// hash: '',
|
||
// search: '',
|
||
// href: 'git+ssh://git@host.xz/path/name.git' }
|
||
|
||
console.log(parseUrl("git@github.com:IonicaBizau/git-stats.git"));
|
||
// { protocols: [],
|
||
// protocol: 'ssh',
|
||
// port: null,
|
||
// resource: 'github.com',
|
||
// user: 'git',
|
||
// pathname: '/IonicaBizau/git-stats.git',
|
||
// hash: '',
|
||
// search: '',
|
||
// href: 'git@github.com:IonicaBizau/git-stats.git' }
|
||
```
|
||
|
||
|
||
|
||
## :question: Get Help
|
||
|
||
There are few ways to get help:
|
||
|
||
1. Please [post questions on Stack Overflow](https://stackoverflow.com/questions/ask). You can open issues with questions, as long you add a link to your Stack Overflow question.
|
||
2. For bug reports and feature requests, open issues. :bug:
|
||
3. For direct and quick help, you can [use Codementor](https://www.codementor.io/johnnyb). :rocket:
|
||
|
||
|
||
## :memo: Documentation
|
||
|
||
|
||
### `parseUrl(url)`
|
||
Parses the input url.
|
||
|
||
#### Params
|
||
- **String** `url`: The input url.
|
||
|
||
#### Return
|
||
- **Object** An object containing the following fields:
|
||
- `protocols` (Array): An array with the url protocols (usually it has one element).
|
||
- `protocol` (String): The first protocol, `"ssh"` (if the url is a ssh url) or `"file"`.
|
||
- `port` (null|Number): The domain port.
|
||
- `resource` (String): The url domain (including subdomains).
|
||
- `user` (String): The authentication user (usually for ssh urls).
|
||
- `pathname` (String): The url pathname.
|
||
- `hash` (String): The url hash.
|
||
- `search` (String): The url querystring value.
|
||
- `href` (String): The input url.
|
||
|
||
|
||
|
||
## :yum: How to contribute
|
||
Have an idea? Found a bug? See [how to contribute][contributing].
|
||
|
||
|
||
## :sparkling_heart: Support my projects
|
||
|
||
I open-source almost everything I can, and I try to reply everyone needing help using these projects. Obviously,
|
||
this takes time. You can integrate and use these projects in your applications *for free*! You can even change the source code and redistribute (even resell it).
|
||
|
||
However, if you get some profit from this or just want to encourage me to continue creating stuff, there are few ways you can do it:
|
||
|
||
- Starring and sharing the projects you like :rocket:
|
||
- [![PayPal][badge_paypal]][paypal-donations]—You can make one-time donations via PayPal. I'll probably buy a ~~coffee~~ tea. :tea:
|
||
- [![Support me on Patreon][badge_patreon]][patreon]—Set up a recurring monthly donation and you will get interesting news about what I'm doing (things that I don't share with everyone).
|
||
- **Bitcoin**—You can send me bitcoins at this address (or scanning the code below): `1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6`
|
||
|
||

|
||
|
||
Thanks! :heart:
|
||
|
||
|
||
## :dizzy: Where is this library used?
|
||
If you are using this library in one of your projects, add it in this list. :sparkles:
|
||
|
||
|
||
- [`delta-screen`](https://github.com/carlosmarte/delta-screen#readme)—[delta-screen on npm](https://www.npmjs.com/package/delta-screen)
|
||
- [`deploy-versioning`](https://npmjs.com/package/deploy-versioning)—Deploy your code keeping older versions.
|
||
- [`eval-spider`](https://github.com/evalsocket/eval-spider/blob/master/README.md) (by evalsocket)—crawle website
|
||
- [`git-up`](https://github.com/IonicaBizau/git-up)—A low level git url parser.
|
||
- [`heroku-wp-environment-sync`](https://github.com/taneliheikkinen/heroku-wp-environment-sync#readme) (by Taneli Heikkinen)—A heroku plugin to sync different wordpress environments.
|
||
- [`hubot-will-it-connect`](https://github.com/gambtho/hubot-will-it-connect#readme) (by gambtho)—Connects hubot with willitconnect, to validate CF's ability to connect to external resources
|
||
- [`kakapo`](https://github.com/devlucky/Kakapo.js#readme) (by devlucky)—Next generation mocking framework in Javascript
|
||
- [`lien`](https://github.com/LienJS/Lien)—An easy to use web framework for Node.js.
|
||
- [`microbe.js`](https://github.com/Aweary/microbe.js) (by Brandon Dail)—A small Node.js framework for simple routing
|
||
- [`native-zip`](https://npmjs.com/package/native-zip) (by kardel)—app内H5应用本地化打包工具,支持增量打包,全量打包
|
||
- [`normalize-ssh`](https://github.com/zkochan/normalize-ssh#readme) (by Zoltan Kochan)—Normalize a SSH URL
|
||
- [`parse-dburi`](https://github.com/dgoguerra/parse-dburi) (by Diego Guerra)—Parse and stringify a DB URI
|
||
- [`ts-scraper`](https://github.com/pskd73/ts-scraper#readme) (by Pramod Kumar)—Scarp links present in the website recursively
|
||
- [`tumblr-text`](https://npmjs.com/package/tumblr-text) (by cobaimelan)—[](https://travis-ci.org/ayhankuru/tumblr-text) [](https://david-dm.org/ayhan
|
||
- [`url-local`](https://github.com/IonicaBizau/url-local#readme)—Checks if a given url is a local url or not.
|
||
|
||
## :scroll: License
|
||
|
||
[MIT][license] © [Ionică Bizău][website]
|
||
|
||
[badge_patreon]: http://ionicabizau.github.io/badges/patreon.svg
|
||
[badge_amazon]: http://ionicabizau.github.io/badges/amazon.svg
|
||
[badge_paypal]: http://ionicabizau.github.io/badges/paypal.svg
|
||
[badge_paypal_donate]: http://ionicabizau.github.io/badges/paypal_donate.svg
|
||
[patreon]: https://www.patreon.com/ionicabizau
|
||
[amazon]: http://amzn.eu/hRo9sIZ
|
||
[paypal-donations]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RVXDDLKKLQRJW
|
||
[donate-now]: http://i.imgur.com/6cMbHOC.png
|
||
|
||
[license]: http://showalicense.com/?fullname=Ionic%C4%83%20Biz%C4%83u%20%3Cbizauionica%40gmail.com%3E%20(https%3A%2F%2Fionicabizau.net)&year=2015#license-mit
|
||
[website]: https://ionicabizau.net
|
||
[contributing]: /CONTRIBUTING.md
|
||
[docs]: /DOCUMENTATION.md
|