Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/brunobernardino/shurley

I'll give you the right URL, but don't call me Shirley!
https://github.com/brunobernardino/shurley

deno javascript npm package typescript url-parser

Last synced: 20 days ago
JSON representation

I'll give you the right URL, but don't call me Shirley!

Awesome Lists containing this project

README

        

# Shurley

[![](https://github.com/BrunoBernardino/shurley/workflows/Run%20Tests/badge.svg)](https://github.com/BrunoBernardino/shurley/actions?workflow=Run+Tests) [![deno](https://shield.deno.dev/x/shurley)](https://deno.land/x/shurley) [![npm](https://img.shields.io/npm/v/shurley.svg)](https://www.npmjs.com/package/shurley) [![jsr](https://jsr.io/badges/@brn/shurley)](https://jsr.io/@brn/shurley)

> I'll give you the right URL, but [don't call me Shirley!](https://www.youtube.com/watch?v=ixljWVyPby0)

Parses URLs from user input (with potential typos in protocols, bad copy+paste, etc.) and returns a proper URL.

It has no dependencies, and it's meant to be this simple.

### Some things to note:

1. It doesn't check if the URL exists, you can do that in many different ways.

2. It assumes only `http` and `https` protocols for URLs.

3. If there's a "mistake" in the URL protocol, it defaults to `https`.

## Usage

It only has a _single method_: `parse(url: string)` which returns the same string, parsed.

### Deno

```ts
import shurley from 'jsr:@brn/[email protected]'; // or import shurley from 'https://deno.land/x/[email protected]/mod.ts';

const parsedUrl = shurley.parse('example.com');

console.log(parsedUrl); // Outputs 'https://example.com'
```

### Node/NPM

```bash
npm install --save-exact shurley
```

```js
const shurley = require('shurley'); // or import shurley from 'shurley';

const parsedUrl = shurley.parse('example.com');

console.log(parsedUrl); // Outputs 'https://example.com'
```

## Development

Requires `deno`.

```bash
make format
make test
```

## Publishing

After committing and pushing with a new version in `deno.json`, just run `make publish`.