tiny-shortener
v2.2.3
Published
A new Tiny URL package with promise/async support.
Downloads
22
Readme
tiny-shortener
A new Tiny URL package for Node.js with promise/async and alias support.
About
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.
Installing
Requirements
Since this package uses only Node packages as support, Node will be needed as npm installed.
npm
npm install tiny-shortener --save
Using it
tiny(url, [alias])
- url - Link to be shortened;
- alias - Wanted personalization link;
- Returns <Promise> - Shortened link or rejects an error.
Examples
TypeScript
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}`);
};
JavaScript
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);
});
CLI
tiny-shortener --url www.example.com
Or even with alias support:
tiny-shortener --url www.foo.com --personalization bar
See more
See more in the examples folder.
Why TypeScript?
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.
Style code
Using the Microsoft style code.
Testing
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
Versioning is made through npm versioning system. You can see what version is in the badge at the top of this README.
Build with
Contributing
We're opened to PRs as long you open an issue before explaining what you will be pushing and we will see if fits.
TODO
- Write some more examples
Authors
License
See LICENSE for more about it.
Acknowledges
- 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.