Passage à la Webcrypto API pour Gladys Plus au lieu du polyfill qu’on utilisait jusque-là
Mise à jour des dépendances serveurs
Mise à jour des dépendances front
Mise à jour des Github Actions
Mise à jour de Cypress
Ce que j’ai fais pour l’instant :
1., 2., 3. (en partie) et 5. dans cette PR:
Pour l’instant je passe à Node.js 18 sur le serveur, et Node.js 16 sur le front, car preact-cli tourne sous Webpack 4 qui n’est pas compatible avec Node.js 18 pour l’instant.
Plusieurs raisons à cette amélioration, ce n’est pas juste passer à Node.js 16/18 qui est la clé :
Open-Zwave était une librairie basée sur des binding C++ qui devait être buildée à chaque npm install + docker build dans chaque architecture. Retirer cette lib a pas mal contribué.
Avant Node.js 16, l’API Webcrypto n’était pas disponible dans Node.js donc j’utilisais un polyfill qui devait être compilé à chaque npm install + chaque docker build dans chaque architecture.
Dans le code du gateway, le changement ressemble à ça:
Ce qui retire node-webcrypto-ossl qui était une tannée à compiler, et on passe par l’API native Node.js.
Potentiellement, ça améliore les performances et la stabilité de la partie Gladys Plus car on passe par une API native bétonnée et officielle.
On passe à une version plus récente de sqlite3 qui a les bons bindings avec la Node-API, et qui est normalement pré-compilé pour chaque architecture, pareil on s’économise un build par npm install + build docker par architecture.
En gros, l’écosystème a pas mal évolué et le fait de ne pas utiliser la dernière version de Node nous empêchait de passer à plein de nouvelles optimisations.
L’autre avantage de tout ça, c’est qu’on va avoir un onboarding développeur beaucoup plus facile, et donc ça retirera un frein au développement de service Gladys.
On va pouvoir mettre à jour les tutos, et ça sera beaucoup plus simple
Pour info, j’ai intégré les différents retours fait sur la PR et mergé la PR sur master pour que toutes les PR en cours puissent s’adapter et profiter des améliorations de vitesse de build !
J’ai mis à jour la documentation développeur Linux/MacOS qui est maintenant bien plus claire à mon sens, fini open-zwave
Pour info, au final je suis passé à Node.js 18 sur le back et le front, donc pas de Node 16.
Pour la documentation Windows, est-ce que quelqu’un pourrait faire une passe et vérifier que tout marche bien avec Node.js 18 LTS sur WSL et mettre à jour la documentation ? Merci !
Et encore, on a de la marge d’améliorations, il y a 4-5 tests sur les services MQTT et Zigbee2mqtt qui prennent 10 secondes chacun, donc quasiment la moitié des tests est passé sur ces intégrations.