Skip to content

Latest commit

 

History

History
118 lines (87 loc) · 5.4 KB

README.PT.md

File metadata and controls

118 lines (87 loc) · 5.4 KB

tiny-shortener



English README Portuguese README

npm npm Maintainability Build Status Dependencies codecov

Um novo pacote para Tiny URL em Node.js com suporte a promise/async e alias.

Sobre

A ideia por trás desse pacto é para uma atividade na aula de Open Source da faculdade. O professor passou uma atividade para contrubirmos em um projeto OSS.

Como o pacote TinyURL se tornou uma grande opção após o Google desligar o seu serviço. Porém o TinyURL não possui suporte a Promise, tornando díficil o uso com os mais recentes padrões ECMA. Há um Pull Request(PR) aberto no projeto que dá suporte a isso mas não foi adicionado ao código, a ideia por trás do tiny-shortener é fazer um novo pacote que suporte isso e dar um passo além, suportando alias para as URLs, deixando o usuário personalizar ainda mais.

obs: em casos nos quais o alias não se encontra disponível o sistema retorna um link encurtado sem a personalização apenas.

Instalando

Requerimentos

Como esse pacote apenas usa os padrões de Node, ele será necessário como o npm instalado na máquina.

npm

npm install tiny-shortener --save

Usando

tiny(url, [alias])

  • url - Link a ser encurtado;
  • alias - Opção de personalização;
  • Retorna <Promise> - Link encurtado ou erro.

Exemplos

TypeScript

Com suporte a async/await porém funciona com Promises também:

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

Com suporte a Promises porém funciona com async/await também:

const tiny = require('tiny-shortener').tiny;

tiny('www.microsoft.com')
    .then(console.log)
    .catch(console.error);

// com alias
tiny('www.typescriptlang.org/', 'tslang')
    .then(console.log)
    .catch(console.error);

CLI

tiny-shortener --url www.example.com

Ou até mesmo com suporte para alias:

tiny-shortener --url www.foo.com --personalization bar

Veja mais

Veja os exemplos na pasta examples.

Por que TypeScript?

Usuários de TS sofrem ao ter que fazerem typings para uma boa parte de projetos que usam, sejam eles grandes ou pequenos. Nós decidimos fazer esse projeto dessa maneira justamente para suprir essa necessidade e permitir a intereoperabilidade.

Estilo de Código

Foi utilizado o padrão de código Microsoft.

Testes

Através do Test Driven Development(TDD), foi utilizado a ferramenta do Facebook chamada Jest como test runner através do pacote de supporte para TS chamado ts-jest, que permite rodar o código sem a necessidade de compilar ele. Veja mais dos testes na pasta ci.

Versionamento

O versionamento é gerenciado através do npm mesmo. Você pode ver a versão desse pacote no selo no começo deste README.

Construído com

Contribuindo

Nós estamos abertos para PR com tanto que explicite bem a necessidade através de uma issue.

TODO

  • Escrever mais exemplos

Autores

Licença

Veja LICENSE para mais informações.

Agradecimentos

  • Mocklab - Pelo sistema de teste de API.
  • Stormpath - Este tutorial express tutorial na hora de escrever exemplos;
  • Object Calisthenics - Este post ajudou a entender um novo conceito graça ao feedback do @vinicius73 no grupo de Node.js no Telegram.