Quels types de contribution ?
-
Nouveaux ponts
- Support d’un autre framework ou fork (fork
qbcore, build ESX custom, etc.). - Support d’un autre système de garage.
- Support d’un autre système de clés.
- Support d’un autre système de notifications.
- Support d’un autre framework ou fork (fork
-
Amélioration des ponts existants
- Gestion d’erreurs et validation des entrées plus robustes.
- Meilleurs logs quand une dépendance manque ou est mal configurée.
- Petites optimisations perfs ou BDD sans changer le comportement.
-
Utilitaires cœur
- Helpers génériques clairement réutilisables entre plusieurs scripts.
- Documentation et exemples de code.
Principes de conception
-
Responsabilité unique
- TS-Lib doit rester petit et ciblé. Ce n’est pas un framework et ne remplace pas vos bibliothèques utilitaires.
-
Les ponts d’abord
- La logique spécifique au framework vit dans :
Bridge.Framework.*Bridge.Garages.*Bridge.VehicleKeys.*Bridge.Notify.*
- La logique spécifique au framework vit dans :
-
Piloté par la configuration
- Les nouvelles intégrations passent par
ts-lib/config.lua:- Ajouter une clé dans
Config.Data.Framework,Config.Data.Garages,Config.Data.VehicleKeys, ouConfig.Data.Notify. - Ne pas coder en dur les noms de ressources hors de cette config.
- Ajouter une clé dans
- Les nouvelles intégrations passent par
-
Dégradation propre
- Si la ressource cible n’est pas démarrée ou est mal configurée :
- Logger clairement avec
TS.ErrorPrint. - Échouer proprement sans faire planter les autres scripts.
- Logger clairement avec
- Si la ressource cible n’est pas démarrée ou est mal configurée :
Ajouter un nouveau pont (vue d’ensemble)
-
Étendre la config
Modifiez
ts-lib/config.luaet ajoutez votre option :Pour les frameworks, clés ou notifications, utilisezConfig.Data.Framework,Config.Data.VehicleKeysouConfig.Data.Notify. -
Créer les fichiers du pont
Suivez la structure existante :
- Frameworks :
shared/bridge/framework/<name>/shared.lua|client.lua|server.lua - Garages :
shared/bridge/garages/<name>/shared.lua|client.lua|server.lua - Clés :
shared/bridge/vehiclekeys/<name>/shared.lua|client.lua|server.lua - Notifications :
shared/bridge/notify/<name>/client.lua(généralement côté client uniquement)
- Frameworks :
-
Implémenter les fonctions requises
-
Pour un garage :
Bridge.Garages.Server.Functions.IsVehicleOwned(plate, netId?)Bridge.Garages.Server.Functions.SetVehicleOutsideState(plate, state)
-
Pour les clés véhicule :
Bridge.VehicleKeys.Client.Functions.SetDoorStatus(entity, lockStatus)
-
Pour les notifications :
Bridge.Notify.Client.Functions.Notify(message, type?)
-
Pour les frameworks :
- Voir Pont Framework pour la surface attendue.
-
Pour un garage :
-
Protéger l’absence de ressources
- Utilisez
TS.Utils.IsRessourceLoaded(ou des natives FiveM) avant d’appeler d’autres ressources. - Loggez des messages utiles si quelque chose n’est pas démarré ou est mal configuré.
- Utilisez
-
Mettre à jour la doc
- Ajoutez votre pont dans la section « Systèmes pris en charge » concernée.
- Mettez à jour le tableau « Statut et tests » avec l’état initial (souvent
Expérimental) et, si besoin, votre pseudo.
Flux pour les pull requests
- Fork du dépôt TS-Lib sur GitHub.
- Branche feature au nom clair (ex.
feat/my-garage-bridgeoufix/esx-owner-query). - Implémentez vos changements :
- Restez focalisé et raisonnable en taille.
- Évitez les refactors hors sujet dans la même PR.
- Testez sur au moins une combinaison réelle framework / garage / clés.
- Ouvrez une pull request :
- Décrivez le problème et l’approche.
- Listez les ressources externes (noms + versions si possible).
- Joignez logs ou captures si utile.
Signaler des bugs et demander des fonctionnalités
-
Bugs
- Incluez :
- OS (Windows / Linux), framework et scripts principaux.
- Erreurs console / F8 exactes.
- Étapes de reproduction et, si possible, un repro minimal.
- Incluez :
-
Demandes de fonctionnalités
- Partez du cas d’usage (ex. « Je veux supporter le garage X ») plutôt que d’un nom de fonction.
- Souvent la meilleure réponse est un petit helper générique utilisable par plusieurs scripts.