pagarme-js
pagarme-js copied to clipboard
Typescript support
Oi! Vocês tem planos para suportar typescript? É um requisito para a empresa que trabalho utilizar
@outerlook não deveria ser um problema, todo código JavaScript é TypeScript válido. Você pode usar a biblioteca sem problemas 😉
Desculpa, me expressei mal. Sim, com o código é compatÃvel, é pelo acoplamento da tipagem com nossa API que vem a necessidade. Prevenir e diminuir custos se viermos a precisar trocar para versões mais recentes da API de vocês, por exemplo. Algum plano para manter um arquivo de definição das respostas e das requests, por exemplo?
@outerlook infelizmente não vejo isso acontecendo, pois já tivemos muitos problemas em mapear as respostas da nossa API.
Isso é um problema pois imagine que temos várias SDKs (Python, C#, PHP, JS, Java, etc), cada uma tem n versões e nossa API possui 3 versões atualmente. Caso fizermos o mapeamento de cada rota para cada uma das SDKs, isso seria inviável, visto que podemos adicionar campos a qualquer momento, e isso exigiria constante atualização de todas as SDKs.
Sinto por não podermos ajudar nesse aspecto no momento 😞
Entendi! Tudo bem, obrigado
Alguma coisa mudou desde a ultima resposta? Talvez escrever um arquivo de types pro DefinitelyTyped pra ultima versão da API seja uma boa... É uma tarefa razoavelmente extensa, mas depois de pronta, não seria tanto overhead manter o arquivo atualizado :thinking:
https://pastebin.com/B8TDNFDR
eu comecei um arquivo onde até então fui colocando os que tenho usado, nada muito padronizado nos nomes, mas se for útil de alguma forma, aqui está. :)
a versão que estou usando é v4
https://pastebin.com/B8TDNFDR
eu comecei um arquivo onde até então fui colocando os que tenho usado, nada muito padronizado nos nomes, mas se for útil de alguma forma, aqui está. :)
a versão que estou usando é v4
Como faço para utilizar?
um bom padrão para mim é
- crie uma pasta "types" na raiz do seu projeto (que poderia ser em qualquer lugar)
- certifique-se que e este caminho está dentro do definido no seu 'tsconfig'```
// tsconfig.json
...
"include": [
"types/**/*.d.ts"
]
...
- crie um arquivo, por exemplo pra essa definiçao dentro de types
ex:
pagarme.d.ts
- copie e cole o que está no link pra este arquivo e pronto.
declare module
faz exatamente isso, você declara as types de um modulo em sua definição :)
se estiver utilizando no frontend, que rodará num browser, se não me engano voce precisa declarar pagarme/browser
Boa @outerlook ainda ta mantendo isso? o que acha de colocar como um repo no github?
Partindo do principio que o Pagar.me não irá manter a tipagem desse repositório, acho que seria bacana a comunidade manter o projeto la no DefinitelyTyped como o @flasd sugeriu ou criar um repo. Estou sentido falta da tipagem desse projeto. Poderiamos começar com o trabalho que o @outerlook começou. Apoio e queria ajudar com a ideia
Olha pessoal, eu estou criando um plugin para o Vendure usando essa lib e estou mantendo a tipagem usando a API v4 do Pagar.me partindo do que o @outerlook mandou aqui. Estou atualizando de acordo com a minha necessidade retirando os textos e nome dos campos direto da documentação. Acredito que seria legal manter um repo ou algo do tipo como mandei no comentário acima, porém enquanto isso irei mantendo o meu direto no meu repo. Se alguém quiser usar estará nesse aquivo:
https://github.com/jonyw4/vendure-pagarme-plugin/blob/master/src/types/pagarme.d.ts
@jonyw4 eu comecei algo partidndo do outerlook tambem, posso se ainda quiser dar continudade cria um repo e me chama, ou avisa que eu crio, é que eu ainda nao to mexendo com tanta intessidade nessa parte do meu projeto, mas acho uma boa iniciativa
Beleza então. Eu vou criar um repo contendo apenas a tipagem que compartilhei aqui com vocês e de acordo com que eu for trabalhando eu vou completando e deixo aberto pra todo mundo fazer PR. 👌
Eu acabei de criar o repositório. Quem puder e quiser contribuir é só mandar PR lá https://github.com/jonyw4/pagarme-js-type
Uma atualização sobre o uso de typescript com API do pagarme.
Por algum motivo eu não consegui seguir as instruções da api.readme.dev para instalar @pagarme/v4#dkjdl7jqwf92
com as tipagens corretas, apenas conseguiria usar de forma dinamica, portanto sem types.
Então consegui acessar a API do pagarme na registry em: https://dash.readme.com/api/v1/api-registry/dkjdl7jqwf92
Salvei este resultado json, e com ajuda de https://github.com/drwpow/openapi-typescript gerei pagarmeOAS.ts
Depois para gerar um fetcher
e funcionar, bastou:
import type { paths } from "./pagarmeOAS";
import { Fetcher } from "openapi-typescript-fetch";
import './fetch-polyfill' // https://github.com/ajaishankar/openapi-typescript-fetch#server-side-usage
// declare fetcher for paths
export const fetcher = Fetcher.for<paths>()
// global configuration
fetcher.configure({
baseUrl: "https://api.pagar.me/1",
init: {
headers: {
accept: 'application/json',
'content-type': 'application/json',
},
},
use: [
(url, init, next) => {
const urlObject = new URL(url);
urlObject.searchParams.append("api_key", process.env.API_KEY_PAGARME!);
const newUrlString = urlObject.toString();
return next(newUrlString, init);
},
]
})
E aà só ir seguindo, tudo certo:
export const criarCliente = fetcher.path('/customers').method('post').create()
Lamento se tinha forma mais fácil, mas assim funcionou =)
Edit:
As tipagens ainda não estão 100% pelo que estive utilizando. Parece que não está totalmente completo em alguns objetos mais profundos nos inputs. E alguns unknowns
gerados. Mas está satisfatório. Se houver alguma repo em que eu possa reportar coisas faltantes / erradas neste documento da OAS, seria bacana.