Contribuir para o SDK de TypeScript
Obrigado por ajudar a melhorar o @trucklinemp/sdk, o kit de ferramentas oficial em TypeScript e JavaScript para a Public API, OAuth e webhooks do TrucklineMP.
Este guia destina-se a quem quer alterar o próprio pacote do SDK (novos métodos, correções de erros, tipos, documentação no repositório). Se você precisa apenas usar o SDK em um aplicativo, consulte TypeScript SDK em vez disso.
| Pacote | @trucklinemp/sdk |
| Código-fonte | github.com/trucklinemp/sdk |
| npm | npmjs.com/package/@trucklinemp/sdk |
| Licença | MIT |
Antes de começar
Seção intitulada “Antes de começar”- Abra uma issue para alterações maiores, para que os mantenedores possam alinhar o design.
- Consulte a especificação OpenAPI e o guia da Public API para o contrato HTTP real. O SDK é um cliente fino (thin client) - deve refletir rotas públicas, não inventar rotas privadas.
- Prefere pull requests pequenos e focados a grandes reescritas.
Requisitos
Seção intitulada “Requisitos”- Node.js 18+ (o cliente depende do
fetchglobal) - npm (incluído com o Node)
- Uma conta GitHub e um fork de trucklinemp/sdk
Opcional para verificações manuais de integração:
- Uma chave de API do Console do Desenvolvedor do TrucklineMP
Clonar e instalar
Seção intitulada “Clonar e instalar”git clone https://github.com/YOUR_USER/sdk.gitcd sdknpm installSe estiver trabalhando a partir do monorepo da Truckline, o pacote está em sdk/ com os mesmos scripts.
Scripts
Seção intitulada “Scripts”| Comando | Objetivo |
|---|---|
npm run build |
Empacota com tsup → dist/ (entradas main + oauth + webhooks) |
npm run typecheck |
tsc --noEmit |
npm test |
Testes unitários Vitest |
npm run prepublishOnly |
typecheck + test + build (mantenedores) |
Execute sempre estes comandos antes de abrir um PR:
npm run typechecknpm testnpm run buildEstrutura do pacote
Seção intitulada “Estrutura do pacote”sdk/├── src/│ ├── index.ts # Main exports│ ├── oauth-entry.ts # @trucklinemp/sdk/oauth│ ├── webhooks-entry.ts # @trucklinemp/sdk/webhooks│ ├── client.ts # Truckline class│ ├── http.ts # fetch, retries, hooks│ ├── resources.ts # vtcs, users, events, …│ ├── models.ts # Public response types│ ├── oauth.ts # TrucklineOAuth + PKCE│ ├── webhooks.ts # HMAC + handlers (Node crypto)│ ├── pagination.ts│ ├── batch.ts│ ├── errors.ts│ ├── types.ts│ └── version.ts├── tests/├── examples/├── dist/├── package.json└── …Regras de design
Seção intitulada “Regras de design”- Wrappers finos (thin) sobre os caminhos HTTP. Prefere
this.http.get("/users/…")a mapeamentos pesados. - Codifica segmentos de caminho com
encodeURIComponent. - Passe objetos de query através de
withOptspara manterRequestOptionsconsistente. - Os tipos vivem em
models.ts- mantenha-nos alinhados com a public API / OpenAPI. - A criptografia de webhook fica em
webhooks.ts(apenas Node). Prefere@trucklinemp/sdk/webhookspara handlers no servidor. - O OAuth vive em
oauth.tse na exportação do subcaminho/oauth. - Alterações que quebrem compatibilidade em nomes de métodos / opções seguem o semver; campos de resposta opcionais podem crescer sem uma versão major.
Adicionar um método da Public API
Seção intitulada “Adicionar um método da Public API”Exemplo: a API adiciona GET /users/steam/{steamId}.
- Confirme o caminho e os parâmetros na OpenAPI / no router público da aplicação web.
- Adicione um método no recurso apropriado em
src/resources.ts:
// UsersResourcegetBySteam(steamId: string, options?: RequestOptions) { return this.http.get( `/users/steam/${encodeURIComponent(steamId)}`, options, );}- Se adicionar uma nova classe de recurso, constrói-a em
Trucklineemsrc/client.tse exporta quaisquer novos tipos desrc/index.tsapenas se forem necessários aos consumidores. - Atualize a página de documentação para consumidores (TypeScript SDK) quando a alteração for visível para o usuário.
npm run build && npm run typecheck.
Válvula de escape
Seção intitulada “Válvula de escape”Se uma rota for rara ou ainda estiver a mudar, quem a chama pode usar:
await tl.get("/path");await tl.request("GET", "/path", { query: { … } });Prefere um método nomeado assim que a rota estiver estável e for comummente usada.
Teste rápido local contra a API
Seção intitulada “Teste rápido local contra a API”import { Truckline } from "trucklinemp-sdk"; // or import from your local checkout's src/index.ts
const tl = new Truckline({ apiKey: process.env.TRUCKLINE_API_KEY,});
console.log(await tl.meta.version());Não envie chaves de API ao repositório. Use apenas variáveis de ambiente.
Pull requests
Seção intitulada “Pull requests”- Faça um fork e crie uma branch a partir de
main/master(corresponde à branch padrão do repositório). - Mantenha o diff limitado a um único assunto.
- Descreva o que mudou e por quê e associe qualquer issue relacionada à API ou à documentação.
- Confirme que
npm run buildenpm run typecheckpassam. - Atualize o README ou a documentação quando o comportamento for visível para o usuário.
Estilo de commit (sugerenciado)
Seção intitulada “Estilo de commit (sugerenciado)”feat(sdk): add users.getBySteamfix(sdk): encode path ids on news.getdocs(sdk): document webhook raw-body requirementchore(sdk): bump version to 0.1.2Lançamentos (mantenedores)
Seção intitulada “Lançamentos (mantenedores)”A publicação está documentada no PUBLISH.md do repositório. Resumo:
- Aumenta a
versionempackage.json(npm version patch|minor|major). - Faça push para a branch padrão (ou execute o workflow de publicação).
- O CI compila, verifica os tipos e publica no registro npm público quando a versão é nova.
Os contribuidores não precisam de permissões de publicação no npm. Os mantenedores emitem os lançamentos após revisão.
O que não estamos à procura
Seção intitulada “O que não estamos à procura”- Wrappers para endpoints privados, de administração, ou exclusivos de cookies
- Empacotar utilitários não relacionados que aumenprecisasnecessariamente o pacote
- Tipos rígidos e gerados para cada campo da OpenAPI em cada lançamento (ferramentas opcionais são aceitáveis se discutidas primeiro)
- Segredos, chaves ou tokens pessoais no repositório
Conexões relacionadas
Seção intitulada “Conexões relacionadas”| Recurso | Conexão |
|---|---|
| Usar o SDK | TypeScript SDK |
| Public API | Public API |
| Webhooks | Webhooks |
| Console do Desenvolvedor | trucklinemp.com/developer |
| OpenAPI | openapi.json |
| Traduções da documentação | Contribuir com traduções |
Perguntas sobre as APIs da plataforma (não apenas sobre o pacote do SDK) são bem-vindas através do suporte ou dos canais de desenvolvedores listados em trucklinemp.com.