Contribuer au SDK TypeScript
Merci de contribuer à l’amélioration de @trucklinemp/sdk, le kit officiel TypeScript et JavaScript pour l’API publique de TrucklineMP, OAuth, et les webhooks.
Ce guide s’adresse aux personnes qui souhaitent modifier le package SDK lui-même (nouvelles méthodes, corrections de bugs, types, documentation dans le dépôt). Si vous avez seulement besoin d’utiliser le SDK dans une application, voir SDK TypeScript à la place.
| Package | @trucklinemp/sdk |
| Source | github.com/trucklinemp/sdk |
| npm | npmjs.com/package/@trucklinemp/sdk |
| Licence | MIT |
Avant de commencer
Section intitulée « Avant de commencer »- Ouvrez une issue pour les changements plus importants afin que les mainteneurs puissent s’aligner sur la conception.
- Consultez la spécification OpenAPI et le guide de l’API publique pour le véritable contrat HTTP. Le SDK est un client léger - il devrait refléter les routes publiques, pas en inventer de privées.
- Préférez des pull requests petites et ciblées plutôt que de grandes réécritures.
Prérequis
Section intitulée « Prérequis »- Node.js 18+ (le client s’appuie sur
fetchglobal) - npm (fourni avec Node)
- Un compte GitHub et un fork de trucklinemp/sdk
Optionnel pour des vérifications d’intégration manuelles :
- Une clé API de la Console développeur TrucklineMP
Cloner et installer
Section intitulée « Cloner et installer »git clone https://github.com/YOUR_USER/sdk.gitcd sdknpm installSi vous travaillez depuis la structure du monorepo Truckline, le package se trouve sous sdk/ avec les mêmes scripts.
| Commande | Objectif |
|---|---|
npm run build |
Bundle avec tsup → dist/ (entrées main + oauth + webhooks) |
npm run typecheck |
tsc --noEmit |
npm test |
Tests unitaires Vitest |
npm run prepublishOnly |
typecheck + test + build (mainteneurs) |
Exécutez toujours ceci avant d’ouvrir une PR :
npm run typechecknpm testnpm run buildStructure du package
Section intitulée « Structure du package »sdk/├── src/│ ├── index.ts # Exports principaux│ ├── oauth-entry.ts # @trucklinemp/sdk/oauth│ ├── webhooks-entry.ts # @trucklinemp/sdk/webhooks│ ├── client.ts # Classe Truckline│ ├── http.ts # fetch, réessais, hooks│ ├── resources.ts # vtcs, users, events, …│ ├── models.ts # Types de réponse publics│ ├── 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└── …Règles de conception
Section intitulée « Règles de conception »- Wrappers légers au-dessus des chemins HTTP. Préférez
this.http.get("/users/…")à un mapping lourd. - Encodez les segments de chemin avec
encodeURIComponent. - Passez les objets de requête via
withOptspour queRequestOptionsreste cohérent. - Les types vivent dans
models.ts- gardez-les alignés avec l’API publique / OpenAPI. - La crypto des webhooks reste dans
webhooks.ts(Node uniquement). Préférez@trucklinemp/sdk/webhookspour les handlers serveur. - OAuth vit dans
oauth.tset l’export du sous-chemin/oauth. - Les changements majeurs sur les noms de méthodes / options suivent semver ; les champs de réponse optionnels peuvent évoluer sans bump majeur.
Ajouter une méthode d’API publique
Section intitulée « Ajouter une méthode d’API publique »Exemple : l’API ajoute GET /users/steam/{steamId}.
- Confirmez le chemin et les paramètres dans OpenAPI / le routeur public de l’application web.
- Ajoutez une méthode sur la bonne ressource dans
src/resources.ts:
// UsersResourcegetBySteam(steamId: string, options?: RequestOptions) { return this.http.get( `/users/steam/${encodeURIComponent(steamId)}`, options, );}- Si vous introduisez une nouvelle classe de ressource, construisez-la sur
Trucklinedanssrc/client.tset exportez tout nouveau type depuissrc/index.tsuniquement si les appelants en ont besoin. - Mettez à jour la page de documentation consommateur (SDK TypeScript) lorsque le changement est visible pour l’utilisateur.
npm run build && npm run typecheck.
Échappatoire
Section intitulée « Échappatoire »Si une route est rare ou encore en évolution, les appelants peuvent utiliser :
await tl.get("/path");await tl.request("GET", "/path", { query: { … } });Préférez une méthode nommée une fois que la route est stable et couramment utilisée.
Test de fumée local contre l’API
Section intitulée « Test de fumée local contre l’API »import { Truckline } from "trucklinemp-sdk"; // ou importez depuis src/index.ts de votre checkout local
const tl = new Truckline({ apiKey: process.env.TRUCKLINE_API_KEY,});
console.log(await tl.meta.version());Ne commitez pas de clés API. Utilisez uniquement des variables d’environnement.
Pull requests
Section intitulée « Pull requests »- Forkez et créez une branche depuis
main/master(correspondant à la branche par défaut du dépôt). - Gardez le diff limité à une seule préoccupation.
- Décrivez ce qui a changé et pourquoi, et liez toute issue API / documentation.
- Confirmez que
npm run buildetnpm run typecheckpassent. - Mettez à jour le README ou la documentation lorsque le comportement est visible pour l’utilisateur.
Style de commit (suggéré)
Section intitulée « Style de commit (suggéré) »feat(sdk): add users.getBySteamfix(sdk): encode path ids on news.getdocs(sdk): document webhook raw-body requirementchore(sdk): bump version to 0.1.2Releases (mainteneurs)
Section intitulée « Releases (mainteneurs) »La publication est couverte dans le PUBLISH.md du dépôt. Résumé :
- Incrémentez
versiondanspackage.json(npm version patch|minor|major). - Poussez vers la branche par défaut (ou exécutez le workflow de publication).
- La CI build, typecheck, et publie sur le registre npm public lorsque la version est nouvelle.
Les contributeurs n’ont pas besoin de droits de publication npm. Les mainteneurs réalisent les releases après revue.
Ce que nous ne recherchons pas
Section intitulée « Ce que nous ne recherchons pas »- Des wrappers autour d’endpoints web privés, admin, ou réservés aux cookies
- Le regroupement d’utilitaires sans rapport qui alourdissent le package
- Des types stricts et générés pour chaque champ OpenAPI à chaque release (l’outillage optionnel est acceptable si discuté au préalable)
- Des secrets, clés, ou tokens personnels dans le dépôt
Liens associés
Section intitulée « Liens associés »| Ressource | Lien |
|---|---|
| Utiliser le SDK | SDK TypeScript |
| API publique | API publique |
| Webhooks | Webhooks |
| Console développeur | trucklinemp.com/developer |
| OpenAPI | openapi.json |
| Traductions de la documentation | Contribuer aux traductions |
Les questions sur les API de la plateforme (pas seulement le package SDK) sont les bienvenues via le support ou les canaux développeurs listés sur trucklinemp.com.