A new Tiny URL package for Node.js with promise/async and alias support.
The idea behind this package is for a Open Source class taken at college. The professor wanted us to make a contribution to an OSS project.
Since the TinyURL package is a great option after Google has shut down it's shortener service. But the TinyURL has no Promise support, making it difficult to use with any new ECMA standards. As there is a Pull Request(PR) opened supporting this in the project and still isn't merged, the idea behind tiny-shortener is to make a new package that supports this and goes a step further supporting alias, letting the user personalize the shortened URL.
obs: in case that that the alias isn't available the request still works but falls back to an default shortened link.
Since this package uses only Node packages as support, Node will be needed as npm installed.
npm install tiny-shortener --save
- url - Link to be shortened;
- alias - Wanted personalization link;
- Returns <Promise> - Shortened link or rejects an error.
With async/await support but works with Promises as well:
import { tiny } from 'tiny-shortener';
const asyncRequest = async (): Promise<void> => {
const shortened = <string> await tiny('www.microsoft.com');
const aliased = <string> await tiny('www.typescriptlang.org/', 'tslang');
console.log(`Without alias is: ${shortened}\nWith alias: ${aliased}`);
};
With Promises support but works with async/await as well:
const tiny = require('tiny-shortener').tiny;
tiny('www.microsoft.com')
.then(console.log)
.catch(console.error);
// with alias
tiny('www.typescriptlang.org/', 'tslang')
.then(console.log)
.catch(console.error);
});
tiny-shortener --url www.example.com
Or even with alias support:
tiny-shortener --url www.foo.com --personalization bar
See more in the examples folder.
TS users suffer from having to make the typings for a large part of little projects. We've decide to make this as a TS project to allow a painless interoperability.
Using the Microsoft style code.
With Test Driven Development(TDD) in mind, we've used the Facebook's Jest test runner through the ts-jest package to run with the need to compiling the code. See more in ci folder;
Versioning is made through npm versioning system. You can see what version is in the badge at the top of this README.
We're opened to PRs as long you open an issue before explaining what you will be pushing and we will see if fits.
- Write some more examples
See LICENSE for more about it.
- Mocklab - System of mocking API request for testing;
- Stormpath - This express tutorial for writing examples;
- Object Calisthenics - This post helped to understand a new concept thanks to @vinicius73 feedback on a Node.js Telegram group.