Nondeterministic Polynomial Munchies

    tiny-shortener
    TypeScript icon, indicating that this package has built-in type declarations

    2.2.3 • Public • Published

    tiny-shortener



    English README Portuguese README

    npm npm Maintainability Build Status Dependencies codecov

    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.

    Install

    npm i tiny-shortener

    DownloadsWeekly Downloads

    2

    Version

    2.2.3

    License

    MIT

    Unpacked Size

    50.5 kB

    Total Files

    18

    Last publish

    Collaborators

    • fazenda