Um novo pacote para Tiny URL em Node.js com suporte a promise/async e alias.
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.
Como esse pacote apenas usa os padrões de Node, ele será necessário como o npm instalado na máquina.
npm install tiny-shortener --save
- url - Link a ser encurtado;
- alias - Opção de personalização;
- Retorna <Promise> - Link encurtado ou erro.
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}`);
};
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);
tiny-shortener --url www.example.com
Ou até mesmo com suporte para alias:
tiny-shortener --url www.foo.com --personalization bar
Veja os exemplos na pasta examples.
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.
Foi utilizado o padrão de código Microsoft.
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.
O versionamento é gerenciado através do npm mesmo. Você pode ver a versão desse pacote no selo no começo deste README.
Nós estamos abertos para PR com tanto que explicite bem a necessidade através de uma issue.
- Escrever mais exemplos
Veja LICENSE para mais informações.
- 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.