From f832f5f3e282a0ae4cebcb65b2137e8d4dc62ea3 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 14 Jan 2024 18:37:58 +0100 Subject: [PATCH 01/12] Begin add kde_contribution --- data_src/posts/kde_contribution.md | 97 ++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 data_src/posts/kde_contribution.md diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md new file mode 100644 index 0000000..7cbe377 --- /dev/null +++ b/data_src/posts/kde_contribution.md @@ -0,0 +1,97 @@ +--- +image_path: "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Test-Logo.svg/783px-Test-Logo.svg.png?20150906031702" +slug: kde_first_conf +title: Contribuer sur le projet KDE +date: 2023-11-26T00:00:00Z +description: Comment contribuer financièrement, en remontant les bugs ou en aidant au développement de KDE directement +project_link: none +draft: true +tags: + - kde + - linux +--- + +# Qu'est-ce que KDE ? + +KDE est un projet qui a pour but de développer des logiciels open-source. Le projet comporte plusieurs éléments les plus connus. + +- KF5 ou KF6 est un ensemble de librairie utilisé pour le developpement de l'ensemble des logiciels de KDE. Kirigami une librairie qui permet le développement sur toutes plateformes de manière responsive fait partie de KF5/KF6. + +- Plasma Shell est l'environnement de bureau développé pour Linux. + +# Comment contribuer à KDE + +1. Financièrement + +On peut contribuer de plusieurs manières, d'abord on peut simplement contribuer financièrement au projet avec le lien [Donations](https://kde.org/fr/community/donations/). + +2. Rapport de bug + +N'importe qui peut contribuer en aidant les développeurs de KDE en testant et en remontant les soucis rencontrées avec le lien [KDE Bugs](https://bugs.kde.org/) ou directement sur [Gitlab](https://invent.kde.org). +Les distributions permettent en général également de tester la version instable de KDE pour tester en avant première les nouveautés. +Cette étape est souvent sous-estimé alors que ça permet au développeur de trouver beaucoup de bugs. Plus il y a de beta-testeur, plus il y a de machine et de configuration de machine différente, plus il y a de chance de trouver des bugs. On remontant les bugs, ça permet de corriger et d'améliorer l'expérience utilisateur pour ceux qui installeront la version Final. + +3. Participation au développement de KDE + +La dernière façon de contribuer et de participer aux développement de KDE. +Pour aider les nouveaux arrivants, KDE trie les bugs qui nécessite peut de connaissance pour apprendre doucement depuis [Bugs KDE](https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords=junior-jobs&list_id=1340815) et [Gitlab](https://invent.kde.org/dashboard/issues?sort=created_date&state=opened&label_name%5B%5D=Junior+Job). + + +# Contribuer en aidant au développpement de KDE + +Il existe un outil pour faciliter la compilation de l'ensemble des outils de KDE et de l'environnement de KDE. Cet outil c'est `kdesrc-build`, une fois configuré, on peut facilement compiler et lancer un outil spécifique de KDE avec les commandes `kdesrc-build [nom de l'outil]` et `kdesrc-run [nom de l'outil]`. Ça permet de gagner pas mal de temps. L'outil permet également de générer l'ensemble des configurations pour le `LSP` (Language Server Protocol) utilisé par exemple par `Visual Studio Code`. Tout est conçu pour que l'on est juste à lancer notre IDE favoris et commencer directement le développement sur KDE sans ce préocupper du reste. +On peut également installer une session KDE Plasma Shell pour lancer l'environnement Plasma compilé à l'instant directement depuis l'interface de connexion de la distribution Linux. + +## Configuration de `kdesrc-buildrc` + +Tout d'abord, il faut avoir installé et configuré l'outil `kdesrc-build`. Pour le configurer, il suffit de suivre la procédure sur ce lien [Configuration de l'environnement de développement](https://community.kde.org/Get_Involved/development/Set_up_a_development_environment). + +Pour le développement sur KDE Plasma 6, j'ai rajouté `branch-group kf6-qt6` ce qui va automatiquement switcher sur la bonne branche lors du clonage des repository git de KDE mais également rajouté l'option cmake `-DBUILD_WITH_QT6=on` au moment de la configuration des projets avec cmake pour activer la compilation avec QT6. + +Pour éviter de s'arreter en plein milieu de la compilation des outils à cause d'un seul outil, j'ai rajouté l'option `stop-on-failure false`, je pars du principe que c'est pas grave si l'un des logiciels ne se compile pas. + +Les options `compile-commands-linking true` et `compile-commands-export true` permet d'améliorer le support avec les `LSP` en mettant en cache l'ensemble des librairies nécessaire à la compilation dans un fichier. Et l'option `generate-vscode-project-config true` permet de générer un projet `Visual Studio Code`. Ça évite de devoir le configuré surtout que l'option va rajouter aussi la liste des extensions nécessaires pour que `Visual Studio Code` ce configure directement. + +Fichier final sans les commentaires `~/.config/kdesrc-buildrc` +```conf +global + branch-group kf6-qt6 + + install-dir ~/kde/usr + source-dir ~/kde/src + build-dir ~/kde/build + + num-cores auto + num-cores-low-mem auto + + install-session-driver false + + install-environment-driver true + + stop-on-failure false + + directory-layout flat + + cmake-generator Kate - Ninja + + compile-commands-linking true + compile-commands-export true + + generate-vscode-project-config true +end global + +include ~/kde/src/kdesrc-build/data/build-include/kf6-common-options.ksb +include ~/kde/src/kdesrc-build/data/build-include/kf6-frameworks.ksb +include ~/kde/src/kdesrc-build/data/build-include/kf6-workspace.ksb +include ~/kde/src/kdesrc-build/data/build-include/kf6-applications.ksb +include ~/kde/src/kdesrc-build/data/build-include/kf6-kdepim.ksb +``` + +## Utilisation de `kdesrc-build` + +Pour lancer la compilation de l'ensemble des outils KDE et de l'environnement Plasma, il suffit d'executer la commande `kdesrc-build`. +Pour compiler uniquement un seul outil, on peut executer la commande `kdesrc-build kate` par exemple pour compiler uniquement `kate` et ces dépendances. +`kdesrc-buikd -D kate` pour compiler sans inclure les dépendances. +`kdesrc-build -S` pour ne pas mettre à jour les sources du projets (Pratique si on est en train de développer une feature). + +Si on souhaite tester ce que l'on a fait sur un projet, on peut chainer les options `kdesrc-build -S -D [projet]` ce qui permet de compiler uniquement notre code sans les dépendances et ensuite faire `kdesrc-run [projet]` pour le lancer. From 3a7762fdba439f5705ece00bdaad62fb8c5ba791 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 14:03:33 +0100 Subject: [PATCH 02/12] Rewrite KDE contribution --- data_src/posts/kde_contribution.md | 396 ++++++++++++++++++++++++----- 1 file changed, 335 insertions(+), 61 deletions(-) diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md index 7cbe377..b142815 100644 --- a/data_src/posts/kde_contribution.md +++ b/data_src/posts/kde_contribution.md @@ -1,9 +1,9 @@ --- image_path: "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Test-Logo.svg/783px-Test-Logo.svg.png?20150906031702" slug: kde_first_conf -title: Contribuer sur le projet KDE +title: Mes premières contributions à KDE date: 2023-11-26T00:00:00Z -description: Comment contribuer financièrement, en remontant les bugs ou en aidant au développement de KDE directement +description: Ma première configuration et ma première contribution à l'environnement mobile (Plasma-Mobile). project_link: none draft: true tags: @@ -11,73 +11,47 @@ tags: - linux --- -# Qu'est-ce que KDE ? +# Mes premières contributions à KDE + +## Rapide rappel à propos de KDE KDE est un projet qui a pour but de développer des logiciels open-source. Le projet comporte plusieurs éléments les plus connus. -- KF5 ou KF6 est un ensemble de librairie utilisé pour le developpement de l'ensemble des logiciels de KDE. Kirigami une librairie qui permet le développement sur toutes plateformes de manière responsive fait partie de KF5/KF6. +- [KF5 ou KF6](https://develop.kde.org/products/frameworks/) est un ensemble de librairies utilisées pour le développement de l'ensemble des logiciels de KDE. Il est basé sur la librairie [QT](https://www.qt.io/). +> Exemple : Kirigami que l'on peut voir comme un "flutter". +> +> Note: +> +> KF5 => Basé sur QT5 +> KF6 => Basé sur QT6 -- Plasma Shell est l'environnement de bureau développé pour Linux. +- [Plasma Shell](https://kde.org/fr/plasma-desktop/) est l'environnement de bureau développé pour Linux. -# Comment contribuer à KDE +## Ma configuration -1. Financièrement +Pour développer sur KDE, KDE fournis un utilitaire assez puissant `kdesrc-build`. +Il permet de configurer l'IDE, compiler, exécuter et la gestion des dépendances avec l'aide d'une seule ligne de commande. -On peut contribuer de plusieurs manières, d'abord on peut simplement contribuer financièrement au projet avec le lien [Donations](https://kde.org/fr/community/donations/). +Pour le configurer, il suffit de suivre la procédure sur ce lien [Configuration de l'environnement de développement](https://community.kde.org/Get_Involved/development/Set_up_a_development_environment). -2. Rapport de bug +### Mes premières difficultés -N'importe qui peut contribuer en aidant les développeurs de KDE en testant et en remontant les soucis rencontrées avec le lien [KDE Bugs](https://bugs.kde.org/) ou directement sur [Gitlab](https://invent.kde.org). -Les distributions permettent en général également de tester la version instable de KDE pour tester en avant première les nouveautés. -Cette étape est souvent sous-estimé alors que ça permet au développeur de trouver beaucoup de bugs. Plus il y a de beta-testeur, plus il y a de machine et de configuration de machine différente, plus il y a de chance de trouver des bugs. On remontant les bugs, ça permet de corriger et d'améliorer l'expérience utilisateur pour ceux qui installeront la version Final. +Il faut savoir que quand j'ai commencé à vouloir contribuer au projet KDE. Le projet était en train de migrer de QT5 à QT6. +Donc, les configurations nécessaires pour compiler correctement la version 6 était nettement plus compliqué que maintenant. +Aujourd'hui, il suffit juste de suivre le lien ci-dessus et on peut direct travailler sur KDE 6. +Avant, on avait aucune documentation pour la migrer n'ont plus, il fallait fouiller sur Github ou sur les blogs pour réussir +à avoir la configuration. -3. Participation au développement de KDE +Pour le développement sur KDE Plasma 6, j'ai dû faire quelques réajustements sur le fichier `~/.config/kdesrc-buildrc`. -La dernière façon de contribuer et de participer aux développement de KDE. -Pour aider les nouveaux arrivants, KDE trie les bugs qui nécessite peut de connaissance pour apprendre doucement depuis [Bugs KDE](https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords=junior-jobs&list_id=1340815) et [Gitlab](https://invent.kde.org/dashboard/issues?sort=created_date&state=opened&label_name%5B%5D=Junior+Job). +J'ai changé la branche par défaut avec l'option `branch-group kf6-qt6`. +Elle permet de cloner les repositories correctement et d'ajouter l'option cmake `-DBUILD_WITH_QT6=on`. +J'ai aussi changé les fichiers de configuration utilisées pour obtenir le résultat ci-dessous. - -# Contribuer en aidant au développpement de KDE - -Il existe un outil pour faciliter la compilation de l'ensemble des outils de KDE et de l'environnement de KDE. Cet outil c'est `kdesrc-build`, une fois configuré, on peut facilement compiler et lancer un outil spécifique de KDE avec les commandes `kdesrc-build [nom de l'outil]` et `kdesrc-run [nom de l'outil]`. Ça permet de gagner pas mal de temps. L'outil permet également de générer l'ensemble des configurations pour le `LSP` (Language Server Protocol) utilisé par exemple par `Visual Studio Code`. Tout est conçu pour que l'on est juste à lancer notre IDE favoris et commencer directement le développement sur KDE sans ce préocupper du reste. -On peut également installer une session KDE Plasma Shell pour lancer l'environnement Plasma compilé à l'instant directement depuis l'interface de connexion de la distribution Linux. - -## Configuration de `kdesrc-buildrc` - -Tout d'abord, il faut avoir installé et configuré l'outil `kdesrc-build`. Pour le configurer, il suffit de suivre la procédure sur ce lien [Configuration de l'environnement de développement](https://community.kde.org/Get_Involved/development/Set_up_a_development_environment). - -Pour le développement sur KDE Plasma 6, j'ai rajouté `branch-group kf6-qt6` ce qui va automatiquement switcher sur la bonne branche lors du clonage des repository git de KDE mais également rajouté l'option cmake `-DBUILD_WITH_QT6=on` au moment de la configuration des projets avec cmake pour activer la compilation avec QT6. - -Pour éviter de s'arreter en plein milieu de la compilation des outils à cause d'un seul outil, j'ai rajouté l'option `stop-on-failure false`, je pars du principe que c'est pas grave si l'un des logiciels ne se compile pas. - -Les options `compile-commands-linking true` et `compile-commands-export true` permet d'améliorer le support avec les `LSP` en mettant en cache l'ensemble des librairies nécessaire à la compilation dans un fichier. Et l'option `generate-vscode-project-config true` permet de générer un projet `Visual Studio Code`. Ça évite de devoir le configuré surtout que l'option va rajouter aussi la liste des extensions nécessaires pour que `Visual Studio Code` ce configure directement. - -Fichier final sans les commentaires `~/.config/kdesrc-buildrc` -```conf +``` global branch-group kf6-qt6 - - install-dir ~/kde/usr - source-dir ~/kde/src - build-dir ~/kde/build - - num-cores auto - num-cores-low-mem auto - - install-session-driver false - - install-environment-driver true - - stop-on-failure false - - directory-layout flat - - cmake-generator Kate - Ninja - - compile-commands-linking true - compile-commands-export true - - generate-vscode-project-config true + [...] end global include ~/kde/src/kdesrc-build/data/build-include/kf6-common-options.ksb @@ -87,11 +61,311 @@ include ~/kde/src/kdesrc-build/data/build-include/kf6-applications.ksb include ~/kde/src/kdesrc-build/data/build-include/kf6-kdepim.ksb ``` -## Utilisation de `kdesrc-build` +### Configurations utiles -Pour lancer la compilation de l'ensemble des outils KDE et de l'environnement Plasma, il suffit d'executer la commande `kdesrc-build`. -Pour compiler uniquement un seul outil, on peut executer la commande `kdesrc-build kate` par exemple pour compiler uniquement `kate` et ces dépendances. -`kdesrc-buikd -D kate` pour compiler sans inclure les dépendances. -`kdesrc-build -S` pour ne pas mettre à jour les sources du projets (Pratique si on est en train de développer une feature). +1. Désactiver l'arrêt de la compilation lors d'une erreur de compilation. -Si on souhaite tester ce que l'on a fait sur un projet, on peut chainer les options `kdesrc-build -S -D [projet]` ce qui permet de compiler uniquement notre code sans les dépendances et ensuite faire `kdesrc-run [projet]` pour le lancer. +En général, `kdesrc-build` s'adapte et retire tous les projets qui dépendent de la dépendance qui n'a pas réussi à compiler. +Le projet était encore en cours de développement donc les erreurs de compilations étaient très régulières. +J'ai tout simplement désactivé avec l'option `stop-on-failure false`. + +2. Activer le support des LSP + +C'est très pratique si on utilise VSCode ou même n'importe quel outil qui supporte les [LSP](https://microsoft.github.io/language-server-protocol/). + +Il suffit d'activer les options: + +* `compile-commands-linking` => `true` +* `compile-commands-export` => `true` + +3. Générer les projets VSCode + +Il va générer automatiquement les workspaces VSCode avec les extensions recommander et le paramètrage par défaut. +Ça permet de travailler dans de très bonne condition avec VSCode. + +Il suffit de l'activer avec `generate-vscode-project-config true` + +### Options utiles pour la commande kdesrc-build + +* `-D` : Pour ne pas inclure les dépendances dans la compilation +> Exemple: kdesrc-build -D kate + +* `-S` : Pour ne pas mettre à jour les sources +> Exemple: kdesrc-build -S kate + +## Ma contribution + +J'ai travaillé sur le support de la lampe torche pour l'environnement Plasma Mobile. +La fonctionnalité fonctionnait uniquement sur les [pinephones](https://pine64.org/devices/pinephone/) en utilisant le fichier en dure `/sys/devices/platform/led-controller/leds/white:flash/brightness` +([Source](https://invent.kde.org/plasma/plasma-mobile/-/blob/f970aa7acf2e9794ab4ed6b75e8f549bece83561/quicksettings/flashlight/flashlightutil.cpp#L17)). + +### Rappel sur le fonctionnement du noyau Linux autour des leds + +Pour comprendre comment la fonctionnalité, un petit rappel s'impose autour du fonctionnement des leds avec le noyau Linux. +Dès qu'une led est détecté par le noyau, il va mettre à disposition plusieurs fichiers. +On les trouvent dans le dossier correspondant au driver et aussi l'emplacement physique sur le circuit. +Mais on peut aussi les trouver plus simplement dans `/sys/class/leds/`. + +> sys => Fichiers système +> class => Trier par class. +> leds => La class `leds`. On peut trouver aussi par appareil `bluetooth`, puce `tpm`, ... + +On disposent de plusieurs fichiers importants : + +* `brightness` : Permet de changer ou de récupérer l'intensité de la led actuelle. +* `max_brightness` : Permet de connaitre l'intensité max de la led. +* `color` : Ce fichier n'existe pas tout le temps mais permet d'avoir la couleur de la led. +* Le reste des fichiers ne sont pas important pour nous. + +### Explication du fonctionnement de mon code petit à petit + +Tout d'abord, il faut savoir que j'utilise la libraire udev. Il est prévu que je migre vers la librairie [Solid](https://invent.kde.org/frameworks/solid). +Udev pour faire simple, c'est une librairie qui permet d'interagir avec les appareils assez directement sans intermédiaire. +La librairie permet de lister, filtrer, détecter si un appareil est connecté/déconnecté, .... + +Pour commencer, je dois d'abord instancier Udev avec pour l'utiliser par la suite. +```cpp +struct udev *udev = udev_new(); +``` + +Ensuite, je souhaite lister tous les périphériques qui m'intéressent donc ceux appartenant à la class `leds`. +Pour ça, il me suffit de créer un énumerateur qui me permettra de choisir tous mes filtres. + +```cpp +struct udev_enumerate *enumerate = udev_enumerate_new(udev); +``` + +Je choisis de filtrer que ceux qui appartiennent à la class `leds`. + +```cpp +#define TORCH_SUBSYSTEM "leds" +... +udev_enumerate_add_match_subsystem(enumerate, TORCH_SUBSYSTEM); +``` + +Je filtre uniquement ceux qui ont dans le nom `flash` ou `torch`. + +```cpp +udev_enumerate_add_match_sysname(enumerate, "*:torch"); +udev_enumerate_add_match_sysname(enumerate, "*:flash"); +``` + +Puis je lance le scan avec mes filtres. + +```cpp +udev_enumerate_scan_devices(enumerate); +``` + + +Au début, il faut savoir que je prenais le premier appareil avec le code ci-dessous mais certain téléphone ont une torche de couleur jaune et blanche. +Donc, certain utilisateur malheureusement ne pouvait pas utiliser la fonctionnalité. + +```cpp +struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate); +struct udev_list_entry *entry = udev_list_entry_get_next(devices); +``` + +[Source](https://invent.kde.org/plasma/plasma-mobile/-/blob/5c6a97caa52d549c0cb02b17fc65a3a7d729d237/quicksettings/flashlight/flashlightutil.cpp) + +Donc, j'ai changé le code avec ce code ci-dessous qui permet d'itérer sur tous les appareils. + +```cpp +struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate); +struct udev_list_entry *entry = nullptr; + +struct udev_device *device = nullptr; + +udev_list_entry_foreach(entry, devices) +{ + [...] +} +``` + +Pour chaque appareil, j'ai récuperé le répertoire ou se situe l'appareil avec le code ci-dessous +qui me renvoie par exemple: `/sys/devices/platform/led-controller/leds/white:flash`. + +```cpp +const char *path = udev_list_entry_get_name(entry); +``` + +J'instancie une instance udev_device pour interagir avec lui depuis le répertoire. + +```cpp +struct udev_device *device = udev_device_new_from_syspath(udev, path); +``` + +Et à partir de là, il me suffit de lire les fichiers dont j'ai besoin. + +```cpp +const char *maxBrightness = udev_device_get_sysattr_value(device, "[NOM DU FICHIER]"); +``` + +Je lis d'abord le fichier 'color' et je regarde si la couleur est blanche sinon je continue. +Si je ne trouve pas de led de couleur blanche, je prends la dernière valeur récupérée. + +Une fois pour appareil trouvé, il me reste plus qu'à récupérer les infos dont j'ai besoin. +Donc, la luminosité maximale `max_brightness` et la luminosité actuelle `brightness` pour correctement initialiser l'interface. + +Quand je souhaite changer la valeur, je dois d'abord convertir la valeur entière en chaîne de charactère. + +```cpp +const_cast(m_torchEnabled ? "0" : m_maxBrightness) +``` + +Ensuite, je change la luminosité + +```cpp +udev_device_set_sysattr_value(m_device, "brightness", nouvelle_valeur_en_char_*); +``` + +### Fichier final + +Source : https://invent.kde.org/plasma/plasma-mobile/-/blob/d162f96a63600d5b45bb8294afdb84efd85833f9/quicksettings/flashlight/flashlightutil.cpp +```cpp +/* + * SPDX-FileCopyrightText: 2020 Han Young + * SPDX-FileCopyrightText: 2022 by Devin Lin + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "flashlightutil.h" + +#include +#include +#include +#include + +#include +#include + +#define TORCH_SUBSYSTEM "leds" + +FlashlightUtil::FlashlightUtil(QObject *parent) + : QObject{parent} + , m_device{nullptr} + , m_isAvailable{false} +{ + findTorchDevice(); +} + +FlashlightUtil::~FlashlightUtil() +{ + if (m_device != nullptr) { + udev_device_unref(m_device); + } +} + +void FlashlightUtil::toggleTorch() +{ + if (!isAvailable()) { + qWarning() << "Flashlight not available"; + return; + } + + int ret = udev_device_set_sysattr_value(m_device, "brightness", const_cast(m_torchEnabled ? "0" : m_maxBrightness)); + if (ret < 0) { + qWarning() << "Flashlight can't be toggled"; + return; + } + + m_torchEnabled = !m_torchEnabled; + Q_EMIT torchChanged(m_torchEnabled); +} + +bool FlashlightUtil::torchEnabled() const +{ + return m_torchEnabled; +} + +bool FlashlightUtil::isAvailable() const +{ + return m_isAvailable; +} + +void FlashlightUtil::findTorchDevice() +{ + if (m_device != nullptr) { + udev_device_unref(m_device); + } + m_device = nullptr; + m_isAvailable = false; + + struct udev *udev = udev_new(); + struct udev_enumerate *enumerate = udev_enumerate_new(udev); + + udev_enumerate_add_match_subsystem(enumerate, TORCH_SUBSYSTEM); + udev_enumerate_add_match_sysname(enumerate, "*:torch"); + udev_enumerate_add_match_sysname(enumerate, "*:flash"); + udev_enumerate_scan_devices(enumerate); + + struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate); + struct udev_list_entry *entry = nullptr; + + struct udev_device *device = nullptr; + + udev_list_entry_foreach(entry, devices) + { + const char *path = udev_list_entry_get_name(entry); + + if (path == nullptr) { + continue; + } + + if (device != nullptr) { + udev_device_unref(device); // Use to free memory from previous loop iteration + } + + device = udev_device_new_from_syspath(udev, path); + + if (device == nullptr) { + continue; + } + + qInfo() << "Found flashlight device : " << path; + + const char *color = udev_device_get_sysattr_value(device, "color"); + + if (color == nullptr) { + continue; + } + + qInfo() << "Flash color : " << color; + + if (std::strcmp(color, "white") == 0) { + break; + } + } + + if (device == nullptr) { + qWarning() << "No flashlight device found"; + return; + } + + const char *maxBrightness = udev_device_get_sysattr_value(device, "max_brightness"); + + if (maxBrightness == nullptr) { + qWarning() << "Failed to read max_brightness from udev device"; + return; + } + + qInfo() << "Flash maxBrightness : " << maxBrightness; + + const char *brightness = udev_device_get_sysattr_value(device, "brightness"); + + if (brightness == nullptr) { + qWarning() << "Failed to read brightness from udev device"; + return; + } + + qInfo() << "Flash brightness : " << brightness; + + m_maxBrightness = maxBrightness; + m_device = device; + m_isAvailable = true; + m_torchEnabled = std::strcmp(brightness, "0") != 0; + + udev_enumerate_unref(enumerate); + udev_unref(udev); +} +``` From ed6d446728d9c3655f6e4ad33fccbe08306eb874 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 14:03:45 +0100 Subject: [PATCH 03/12] Update dependencies --- Cargo.lock | 752 +++++++++++++++++++++++++++++++--------------- Cargo.toml | 10 +- package-lock.json | 721 ++++++++++++++++++++++++++++++++++---------- 3 files changed, 1078 insertions(+), 405 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4f9f1ec..2c2c70e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,11 +4,11 @@ version = 3 [[package]] name = "actix-codec" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "bytes", "futures-core", "futures-sink", @@ -29,7 +29,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web", - "bitflags 2.4.1", + "bitflags 2.4.2", "bytes", "derive_more", "futures-core", @@ -44,17 +44,17 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.5.1" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129d4c88e98860e1758c5de288d1632b07970a16d59bdf7b8d66053d582bb71f" +checksum = "d223b13fd481fc0d1f83bb12659ae774d9e3601814c68a0bc539731698cca743" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", - "ahash 0.8.7", + "ahash 0.8.8", "base64", - "bitflags 2.4.1", + "bitflags 2.4.2", "brotli", "bytes", "bytestring", @@ -63,7 +63,7 @@ dependencies = [ "flate2", "futures-core", "h2", - "http", + "http 0.2.11", "httparse", "httpdate", "itoa", @@ -88,7 +88,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -98,7 +98,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511" dependencies = [ "bytestring", - "http", + "http 0.2.11", "regex", "serde", "tracing", @@ -154,9 +154,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.4.1" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43428f3bf11dee6d166b00ec2df4e3aa8cc1606aaa0b7433c146852e2f4e03b" +checksum = "43a6556ddebb638c2358714d853257ed226ece6023ef9364f23f0c70737ea984" dependencies = [ "actix-codec", "actix-http", @@ -167,7 +167,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.8.7", + "ahash 0.8.8", "bytes", "bytestring", "cfg-if", @@ -201,7 +201,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -221,9 +221,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ "getrandom", "once_cell", @@ -232,9 +232,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" dependencies = [ "cfg-if", "getrandom", @@ -302,7 +302,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -313,7 +313,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -325,7 +325,7 @@ dependencies = [ "attribute-derive-macro", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -341,7 +341,7 @@ dependencies = [ "proc-macro2", "quote", "quote-use", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -379,9 +379,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitvec" @@ -427,15 +427,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" [[package]] name = "bytecheck" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -445,9 +445,9 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ "proc-macro2", "quote", @@ -497,9 +497,9 @@ dependencies = [ [[package]] name = "cached_proc_macro_types" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" +checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "camino" @@ -525,9 +525,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "android-tzdata", "iana-time-zone", @@ -535,14 +535,14 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -551,15 +551,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", "half", @@ -688,13 +688,19 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -740,6 +746,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "deranged" version = "0.3.11" @@ -757,7 +776,7 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -791,9 +810,9 @@ checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "encoding_rs" @@ -903,7 +922,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -1004,7 +1023,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils 0.2.0", - "http", + "http 0.2.11", "js-sys", "pin-project", "serde", @@ -1055,16 +1074,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b553656127a00601c8ae5590fcfdc118e4083a7924b6cf4ffc1ea4b99dc429d7" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.11", "indexmap", "slab", "tokio", @@ -1074,9 +1093,13 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hashbrown" @@ -1084,7 +1107,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.7", + "ahash 0.7.8", ] [[package]] @@ -1099,7 +1122,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.7", + "ahash 0.8.8", "allocator-api2", ] @@ -1123,6 +1146,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -1130,7 +1164,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.11", "pin-project-lite", ] @@ -1163,7 +1197,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "httparse", "httpdate", @@ -1178,9 +1212,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1412,9 +1446,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -1437,9 +1471,9 @@ checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" [[package]] name = "inventory" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8573b2b1fb643a372c73b23f4da5f888677feef3305146d68a539250a9bccc7" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" [[package]] name = "ipnet" @@ -1449,18 +1483,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" -version = "0.10.5" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -1473,18 +1498,18 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -1503,17 +1528,36 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "leptos" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d02b78d6e38acf8199426058a0d8c4030835d84a4ee16147df25be7fed707e0" +checksum = "269ba4ba91ffa73d9559c975e0be17bd4eb34c6b6abd7fdd5704106132d89d2a" dependencies = [ "cfg-if", - "leptos_config", - "leptos_dom", - "leptos_macro", - "leptos_reactive", - "leptos_server", - "server_fn", + "leptos_config 0.5.7", + "leptos_dom 0.5.7", + "leptos_macro 0.5.7", + "leptos_reactive 0.5.7", + "leptos_server 0.5.7", + "server_fn 0.5.7", + "tracing", + "typed-builder", + "typed-builder-macro", + "web-sys", +] + +[[package]] +name = "leptos" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c115de7c6fca2164133e18328777d02c371434ace38049ac02886b5cffd22dc" +dependencies = [ + "cfg-if", + "leptos_config 0.6.5", + "leptos_dom 0.6.5", + "leptos_macro 0.6.5", + "leptos_reactive 0.6.5", + "leptos_server 0.6.5", + "server_fn 0.6.5", "tracing", "typed-builder", "typed-builder-macro", @@ -1523,29 +1567,44 @@ dependencies = [ [[package]] name = "leptos_actix" -version = "0.5.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b2b118a031de24b39be9ef2dcfa03e7e255e98d06a8aa2c53f220155424cf1" +checksum = "44d3fc0f3b938e14c1132aee443ab56141eceab79e21da282a6cc3d9f65aa458" dependencies = [ "actix-http", "actix-web", "futures", - "leptos", + "leptos 0.6.5", "leptos_integration_utils", + "leptos_macro 0.6.5", "leptos_meta", "leptos_router", "parking_lot", "regex", "serde_json", + "server_fn 0.6.5", "tokio", "tracing", ] [[package]] name = "leptos_config" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcaa5db5b22b794b624e14ffe2aefae215b2d21c60a230ae2d06fe21ae5da64" +checksum = "e72d8689d54737991831e9b279bb4fba36d27a93aa975c75cd4241d9a4a425ec" +dependencies = [ + "config", + "regex", + "serde", + "thiserror", + "typed-builder", +] + +[[package]] +name = "leptos_config" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055262ff3660e95ec95cadd8a05a02070d624354e08e30b99c14a81023feb2dc" dependencies = [ "config", "regex", @@ -1556,9 +1615,9 @@ dependencies = [ [[package]] name = "leptos_dom" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af459b63567e8e9c921ecbe7863732dc8dcb7874eaad6826b7d3778a53ec0ea6" +checksum = "ad314950d41acb1bfdb8b5924811b2983484a8d6f69a20b834a173a682657ed4" dependencies = [ "async-recursion", "cfg-if", @@ -1567,16 +1626,46 @@ dependencies = [ "getrandom", "html-escape", "indexmap", - "itertools 0.10.5", + "itertools", "js-sys", - "leptos_reactive", + "leptos_reactive 0.5.7", "once_cell", "pad-adapter", "paste", "rustc-hash", "serde", "serde_json", - "server_fn", + "server_fn 0.5.7", + "smallvec", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "leptos_dom" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfea7feb9c488448db466ca0673b691ec2a05efb0b2bc6626b7248ee04bb39c" +dependencies = [ + "async-recursion", + "cfg-if", + "drain_filter_polyfill", + "futures", + "getrandom", + "html-escape", + "indexmap", + "itertools", + "js-sys", + "leptos_reactive 0.6.5", + "once_cell", + "pad-adapter", + "paste", + "rustc-hash", + "serde", + "serde_json", + "server_fn 0.6.5", "smallvec", "tracing", "wasm-bindgen", @@ -1586,9 +1675,9 @@ dependencies = [ [[package]] name = "leptos_hot_reload" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea60376eb80a24b3ab082612d62211e3ea0fc4dee132f7ff34d5fa5a5108cd2" +checksum = "3f62dcab17728877f2d2f16d2c8a6701c4c5fbdfb4964792924acb0b50529659" dependencies = [ "anyhow", "camino", @@ -1598,7 +1687,25 @@ dependencies = [ "quote", "rstml", "serde", - "syn 2.0.48", + "syn 2.0.49", + "walkdir", +] + +[[package]] +name = "leptos_hot_reload" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ba8f68f7c3135975eb34ed19210272ebef2d6f422d138ff87a726b8793fe105" +dependencies = [ + "anyhow", + "camino", + "indexmap", + "parking_lot", + "proc-macro2", + "quote", + "rstml", + "serde", + "syn 2.0.49", "walkdir", ] @@ -1611,57 +1718,80 @@ dependencies = [ "encoding_rs", "icondata_core", "lazy_static", - "leptos", + "leptos 0.5.7", "log", "paste", ] [[package]] name = "leptos_integration_utils" -version = "0.5.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dbbd7d721bcdd9aa7b20987063de41314c836a3ac67e263ca489857e337dec" +checksum = "700bdb6d9d754964b576fa3b76a28a68adbd6ced6d7dc84a18e29e91a82c2376" dependencies = [ "futures", - "leptos", - "leptos_config", - "leptos_hot_reload", + "leptos 0.6.5", + "leptos_config 0.6.5", + "leptos_hot_reload 0.6.5", "leptos_meta", "tracing", ] [[package]] name = "leptos_macro" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e96f4c450f4b5e2ccb135c2b1328890f911ca4ee89da9ed6d582df929e6cb5" +checksum = "57955d66f624265222444a5c565fea38efa5b0152a1dfc7c060a78e5fb62a852" dependencies = [ "attribute-derive", "cfg-if", "convert_case 0.6.0", "html-escape", - "itertools 0.11.0", - "leptos_hot_reload", + "itertools", + "leptos_hot_reload 0.5.7", "prettyplease", "proc-macro-error", "proc-macro2", "quote", "rstml", - "server_fn_macro", - "syn 2.0.48", + "server_fn_macro 0.5.7", + "syn 2.0.49", + "tracing", + "uuid", +] + +[[package]] +name = "leptos_macro" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039c510dafb7d9997e4b8accfcced5675fabc65720caf544592df32432d6d65a" +dependencies = [ + "attribute-derive", + "cfg-if", + "convert_case 0.6.0", + "html-escape", + "itertools", + "leptos_hot_reload 0.6.5", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "rstml", + "server_fn_macro 0.6.5", + "syn 2.0.49", "tracing", "uuid", ] [[package]] name = "leptos_meta" -version = "0.5.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983bbf829598d275b01e96bd9fca71e4739dd7b9fdf69cb8898b30ebfb124332" +checksum = "4bbbbd77839b4d3189c06319b32aaa3bc43510fb43f9c1bffb8e124a33decd6c" dependencies = [ "cfg-if", "indexmap", - "leptos", + "leptos 0.6.5", "tracing", "wasm-bindgen", "web-sys", @@ -1669,9 +1799,32 @@ dependencies = [ [[package]] name = "leptos_reactive" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22207568e096ac153ba8da68635e3136c1ec614ea9012736fa861c05bfb2eeff" +checksum = "b4f54a525a0edfc8c2bf3ee92aae411800b8b10892c9cd819f8e8a6d4f0d62f3" +dependencies = [ + "base64", + "cfg-if", + "futures", + "indexmap", + "paste", + "pin-project", + "rustc-hash", + "self_cell", + "serde", + "serde-wasm-bindgen 0.5.0", + "serde_json", + "slotmap", + "thiserror", + "tracing", + "wasm-bindgen-futures", +] + +[[package]] +name = "leptos_reactive" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30c5bc7f3496d6ba399578171cf133c50d2172f9791fe292db4da2fd0d8cec4" dependencies = [ "base64", "cfg-if", @@ -1684,7 +1837,7 @@ dependencies = [ "rustc-hash", "self_cell", "serde", - "serde-wasm-bindgen", + "serde-wasm-bindgen 0.6.3", "serde_json", "slotmap", "thiserror", @@ -1697,17 +1850,17 @@ dependencies = [ [[package]] name = "leptos_router" -version = "0.5.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a2ff8b8e8ae8b17efd8be2a407f7f83ed57c5243f70f2d03e6635f9ff61848" +checksum = "498159479603569e1d7c969cffa0817b73249e96f825c295743f8f4607a68cbe" dependencies = [ "cached", "cfg-if", "gloo-net 0.2.6", - "itertools 0.11.0", + "itertools", "js-sys", "lazy_static", - "leptos", + "leptos 0.6.5", "leptos_integration_utils", "leptos_meta", "linear-map", @@ -1715,6 +1868,7 @@ dependencies = [ "once_cell", "percent-encoding", "regex", + "send_wrapper", "serde", "serde_json", "serde_qs", @@ -1728,25 +1882,41 @@ dependencies = [ [[package]] name = "leptos_server" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "272d018a5adf33d10ee57e6f0f83dccc305c68613cd207e8a653aeebd4cd5b4f" +checksum = "2fd1517c2024bc47d764e96053e55b927f8a2159e735a0cc47232542b493df9d" dependencies = [ "inventory", "lazy_static", - "leptos_macro", - "leptos_reactive", + "leptos_macro 0.5.7", + "leptos_reactive 0.5.7", "serde", - "server_fn", + "server_fn 0.5.7", + "thiserror", + "tracing", +] + +[[package]] +name = "leptos_server" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f06b9b860479385991fad54cbee372382aee3c1e75ca78b5da6f8bda90c153e1" +dependencies = [ + "inventory", + "lazy_static", + "leptos_macro 0.6.5", + "leptos_reactive 0.6.5", + "serde", + "server_fn 0.6.5", "thiserror", "tracing", ] [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "linear-map" @@ -1815,7 +1985,7 @@ dependencies = [ "manyhow-macros", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -1859,9 +2029,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] @@ -1889,19 +2059,25 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.2.17" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] @@ -1970,22 +2146,22 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2002,13 +2178,13 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "portfolio" -version = "0.5.0" +version = "0.6.0" dependencies = [ "actix-files", "actix-web", @@ -2022,7 +2198,7 @@ dependencies = [ "gloo-net 0.5.0", "gray_matter", "icondata", - "leptos", + "leptos 0.6.5", "leptos_actix", "leptos_icons", "leptos_meta", @@ -2055,7 +2231,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2094,9 +2270,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2109,7 +2285,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", "version_check", "yansi", ] @@ -2136,11 +2312,11 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.3" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" +checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "getopts", "memchr", "unicase", @@ -2163,7 +2339,7 @@ checksum = "a7b5abe3fe82fdeeb93f44d66a7b444dedf2e4827defb0a8e69c437b2de2ef94" dependencies = [ "quote", "quote-use-macros", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2175,7 +2351,7 @@ dependencies = [ "derive-where", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2225,9 +2401,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2237,9 +2413,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2254,18 +2430,18 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rend" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.23" +version = "0.11.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" dependencies = [ "base64", "bytes", @@ -2273,7 +2449,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "ipnet", @@ -2286,6 +2462,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tower-service", @@ -2298,9 +2475,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.43" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ "bitvec", "bytecheck", @@ -2316,9 +2493,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.43" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" dependencies = [ "proc-macro2", "quote", @@ -2334,7 +2511,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.48", + "syn 2.0.49", "syn_derive", "thiserror", ] @@ -2400,10 +2577,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] -name = "serde" -version = "1.0.195" +name = "send_wrapper" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" +dependencies = [ + "futures-core", +] + +[[package]] +name = "serde" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] @@ -2420,21 +2606,32 @@ dependencies = [ ] [[package]] -name = "serde_derive" -version = "1.0.195" +name = "serde-wasm-bindgen" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "b9b713f70513ae1f8d92665bbbbda5c295c2cf1da5542881ae5eefe20c9af132" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] name = "serde_json" -version = "1.0.111" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ "itoa", "ryu", @@ -2475,9 +2672,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.30" +version = "0.9.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" +checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e" dependencies = [ "indexmap", "itoa", @@ -2488,14 +2685,13 @@ dependencies = [ [[package]] name = "server_fn" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfed18dfcc8d9004579c40482c3419c07f60ffb9c5b250542edca99f508b0ce9" +checksum = "6c265de965fe48e09ad8899d0ab1ffebdfa1a9914e4de5ff107b07bd94cf7541" dependencies = [ "ciborium", "const_format", "gloo-net 0.2.6", - "inventory", "js-sys", "lazy_static", "once_cell", @@ -2505,35 +2701,90 @@ dependencies = [ "serde", "serde_json", "serde_qs", - "server_fn_macro_default", - "syn 2.0.48", + "server_fn_macro_default 0.5.7", + "syn 2.0.49", "thiserror", "xxhash-rust", ] [[package]] -name = "server_fn_macro" -version = "0.5.4" +name = "server_fn" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b70ae8e22546ba85500391b36c08e3fba64871be8a26557a3663a8e08acb56f" +checksum = "97fab54d9dd2d7e9eba4efccac41d2ec3e7c6e9973d14c0486d662a32662320c" +dependencies = [ + "actix-web", + "bytes", + "ciborium", + "const_format", + "dashmap", + "futures", + "gloo-net 0.5.0", + "http 1.0.0", + "inventory", + "js-sys", + "once_cell", + "send_wrapper", + "serde", + "serde_json", + "serde_qs", + "server_fn_macro_default 0.6.5", + "thiserror", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f77000541a62ceeec01eef3ee0f86c155c33dac5fae750ad04a40852c6d5469a" dependencies = [ "const_format", "proc-macro-error", "proc-macro2", "quote", "serde", - "syn 2.0.48", + "syn 2.0.49", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be6011b586a0665546b7ced372b0be690d9e005d3f8524795da2843274d7720" +dependencies = [ + "const_format", + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.49", "xxhash-rust", ] [[package]] name = "server_fn_macro_default" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7256ba61dfadb220598db418376e7bc2a34b96df36c4dc48f24ffe161810fc0b" +checksum = "8a3353f22e2bcc451074d4feaa37317d9d17dff11d4311928384734ea17ab9ca" dependencies = [ - "server_fn_macro", - "syn 2.0.48", + "server_fn_macro 0.5.7", + "syn 2.0.49", +] + +[[package]] +name = "server_fn_macro_default" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "752ed78ec49132d154b922cf5ab6485680cab039a75740c48ea2db621ad481da" +dependencies = [ + "server_fn_macro 0.6.5", + "syn 2.0.49", ] [[package]] @@ -2595,9 +2846,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -2628,9 +2879,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" dependencies = [ "proc-macro2", "quote", @@ -2646,9 +2897,15 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2678,33 +2935,34 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] name = "time" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ "deranged", "itoa", "libc", + "num-conv", "num_threads", "powerfmt", "serde", @@ -2720,10 +2978,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -2744,9 +3003,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -2808,7 +3067,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2828,22 +3087,22 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typed-builder" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47c0496149861b7c95198088cbf36645016b1a0734cf350c50e2a38e070f38a" +checksum = "444d8748011b93cb168770e8092458cb0f8854f931ff82fdf6ddfbd72a9c933e" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982ee4197351b5c9782847ef5ec1fdcaf50503fb19d68f9771adae314e72b492" +checksum = "563b3b88238ec95680aef36bdece66896eaa7ce3c0f1b4f39d38fb2435261352" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2863,9 +3122,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -2884,9 +3143,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" @@ -2925,9 +3184,9 @@ checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "uuid" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "getrandom", ] @@ -2971,9 +3230,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2981,24 +3240,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -3008,9 +3267,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3018,28 +3277,41 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -3229,9 +3501,9 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53be06678ed9e83edb1745eb72efc0bbcd7b5c3c35711a860906aed827a13d61" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" [[package]] name = "yaml-rust" @@ -3265,7 +3537,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 6244f06..6bf4e44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "portfolio" -version = "0.5.0" +version = "0.6.0" edition = "2021" [lib] @@ -9,9 +9,9 @@ crate-type = ["cdylib", "rlib"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -leptos = { version = "0.5", features = ["nightly"] } -leptos_meta = { version = "0.5", features = ["nightly"] } -leptos_router = { version = "0.5", features = ["nightly"] } +leptos = { version = "0.6", features = ["nightly"] } +leptos_meta = { version = "0.6", features = ["nightly"] } +leptos_router = { version = "0.6", features = ["nightly"] } gloo-net = { version = "0.5", features = ["http"] } log = "0.4" cfg-if = "1.0" @@ -30,7 +30,7 @@ console_error_panic_hook = { version = "0.1", optional = true } # dependecies for server (enable when ssr set) actix-files = { version = "0.6", optional = true } actix-web = { version = "4.4", features = ["macros"], optional = true } -leptos_actix = { version = "0.5", optional = true } +leptos_actix = { version = "0.6", optional = true } futures = { version = "0.3", optional = true } simple_logger = { version = "4.3", optional = true } pulldown-cmark = { version = "0.9", optional = true } # Markdown parser diff --git a/package-lock.json b/package-lock.json index 0f68c93..ca8a528 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -39,9 +56,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" @@ -63,9 +80,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -107,6 +124,40 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -133,9 +184,9 @@ "dev": true }, "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, "funding": [ { @@ -152,9 +203,9 @@ } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -185,13 +236,12 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -207,9 +257,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -226,9 +276,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -248,9 +298,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001547", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", - "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", + "version": "1.0.30001587", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", + "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", "dev": true, "funding": [ { @@ -268,16 +318,10 @@ ] }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -290,6 +334,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -306,6 +353,24 @@ "node": ">= 6" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -315,11 +380,19 @@ "node": ">= 6" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } }, "node_modules/cssesc": { "version": "3.0.0", @@ -345,25 +418,37 @@ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/electron-to-chromium": { - "version": "1.4.549", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.549.tgz", - "integrity": "sha512-gpXfJslSi4hYDkA0mTLEpYKRv9siAgSUgZ+UWyk+J5Cttpd1ThCVwdclzIwQSclz3hYn049+M2fgrP1WpvF8xg==", + "version": "1.4.673", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz", + "integrity": "sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -389,9 +474,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -409,10 +494,26 @@ "node": ">=8" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fraction.js": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", - "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, "engines": { "node": "*" @@ -422,12 +523,6 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -442,21 +537,32 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -474,31 +580,18 @@ "node": ">=10.13.0" } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -512,12 +605,12 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -532,6 +625,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -553,10 +655,34 @@ "node": ">=0.12.0" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jiti": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", - "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -577,6 +703,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -600,15 +735,27 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/mz": { @@ -623,9 +770,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -641,9 +788,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -682,22 +829,13 @@ "node": ">= 6" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/path-parse": { @@ -706,6 +844,22 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -743,9 +897,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -762,7 +916,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -807,21 +961,27 @@ } }, "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" }, "engines": { "node": ">= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" @@ -835,6 +995,18 @@ } } }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.0.tgz", + "integrity": "sha512-p3cz0JV5vw/XeouBU3Ldnp+ZkBjE+n8ydJ4mcwBrOiXXPqNlrzGBqWs9X4MWF7f+iKUBu794Y8Hh8yawiJbCjw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/postcss-nested": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", @@ -855,9 +1027,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -915,9 +1087,9 @@ } }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -964,6 +1136,39 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -973,15 +1178,111 @@ "node": ">=0.10.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", @@ -992,7 +1293,7 @@ "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -1008,9 +1309,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -1018,10 +1319,10 @@ "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", + "jiti": "^1.19.1", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -1119,16 +1420,116 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { "node": ">= 14" From deb8244597c76ad5300c37be1d7f817a4fa34149 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 15:34:23 +0100 Subject: [PATCH 04/12] Fix leptos 0.6 migration --- .gitignore | 1 + Cargo.lock | 415 ++++------------------------------------- Cargo.toml | 6 +- src/app/pages/posts.rs | 59 +++--- 4 files changed, 70 insertions(+), 411 deletions(-) diff --git a/.gitignore b/.gitignore index f33a15c..0ffacff 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ dist-ssr # Added by cargo /target +.sass-cache/ \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 2c2c70e..2ce02c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -661,16 +661,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.6" @@ -1157,17 +1147,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.11", - "pin-project-lite", -] - [[package]] name = "http-range" version = "0.1.5" @@ -1186,30 +1165,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.11", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "iana-time-zone" version = "0.1.60" @@ -1475,12 +1430,6 @@ version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - [[package]] name = "itertools" version = "0.12.1" @@ -1526,25 +1475,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "leptos" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269ba4ba91ffa73d9559c975e0be17bd4eb34c6b6abd7fdd5704106132d89d2a" -dependencies = [ - "cfg-if", - "leptos_config 0.5.7", - "leptos_dom 0.5.7", - "leptos_macro 0.5.7", - "leptos_reactive 0.5.7", - "leptos_server 0.5.7", - "server_fn 0.5.7", - "tracing", - "typed-builder", - "typed-builder-macro", - "web-sys", -] - [[package]] name = "leptos" version = "0.6.5" @@ -1552,12 +1482,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c115de7c6fca2164133e18328777d02c371434ace38049ac02886b5cffd22dc" dependencies = [ "cfg-if", - "leptos_config 0.6.5", - "leptos_dom 0.6.5", - "leptos_macro 0.6.5", - "leptos_reactive 0.6.5", - "leptos_server 0.6.5", - "server_fn 0.6.5", + "leptos_config", + "leptos_dom", + "leptos_macro", + "leptos_reactive", + "leptos_server", + "server_fn", "tracing", "typed-builder", "typed-builder-macro", @@ -1574,32 +1504,19 @@ dependencies = [ "actix-http", "actix-web", "futures", - "leptos 0.6.5", + "leptos", "leptos_integration_utils", - "leptos_macro 0.6.5", + "leptos_macro", "leptos_meta", "leptos_router", "parking_lot", "regex", "serde_json", - "server_fn 0.6.5", + "server_fn", "tokio", "tracing", ] -[[package]] -name = "leptos_config" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e72d8689d54737991831e9b279bb4fba36d27a93aa975c75cd4241d9a4a425ec" -dependencies = [ - "config", - "regex", - "serde", - "thiserror", - "typed-builder", -] - [[package]] name = "leptos_config" version = "0.6.5" @@ -1613,36 +1530,6 @@ dependencies = [ "typed-builder", ] -[[package]] -name = "leptos_dom" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad314950d41acb1bfdb8b5924811b2983484a8d6f69a20b834a173a682657ed4" -dependencies = [ - "async-recursion", - "cfg-if", - "drain_filter_polyfill", - "futures", - "getrandom", - "html-escape", - "indexmap", - "itertools", - "js-sys", - "leptos_reactive 0.5.7", - "once_cell", - "pad-adapter", - "paste", - "rustc-hash", - "serde", - "serde_json", - "server_fn 0.5.7", - "smallvec", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "leptos_dom" version = "0.6.5" @@ -1658,14 +1545,14 @@ dependencies = [ "indexmap", "itertools", "js-sys", - "leptos_reactive 0.6.5", + "leptos_reactive", "once_cell", "pad-adapter", "paste", "rustc-hash", "serde", "serde_json", - "server_fn 0.6.5", + "server_fn", "smallvec", "tracing", "wasm-bindgen", @@ -1673,24 +1560,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_hot_reload" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f62dcab17728877f2d2f16d2c8a6701c4c5fbdfb4964792924acb0b50529659" -dependencies = [ - "anyhow", - "camino", - "indexmap", - "parking_lot", - "proc-macro2", - "quote", - "rstml", - "serde", - "syn 2.0.49", - "walkdir", -] - [[package]] name = "leptos_hot_reload" version = "0.6.5" @@ -1711,14 +1580,15 @@ dependencies = [ [[package]] name = "leptos_icons" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0477a66b90ed94d3b3e9472247189359426c1b6313f8589d3f2edf3fdf676b" +checksum = "584bccafed73138f4d700f936e6a82268efec2df9a2f9d74e1ee80985653413e" dependencies = [ + "bytes", "encoding_rs", "icondata_core", "lazy_static", - "leptos 0.5.7", + "leptos", "log", "paste", ] @@ -1730,36 +1600,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "700bdb6d9d754964b576fa3b76a28a68adbd6ced6d7dc84a18e29e91a82c2376" dependencies = [ "futures", - "leptos 0.6.5", - "leptos_config 0.6.5", - "leptos_hot_reload 0.6.5", + "leptos", + "leptos_config", + "leptos_hot_reload", "leptos_meta", "tracing", ] -[[package]] -name = "leptos_macro" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57955d66f624265222444a5c565fea38efa5b0152a1dfc7c060a78e5fb62a852" -dependencies = [ - "attribute-derive", - "cfg-if", - "convert_case 0.6.0", - "html-escape", - "itertools", - "leptos_hot_reload 0.5.7", - "prettyplease", - "proc-macro-error", - "proc-macro2", - "quote", - "rstml", - "server_fn_macro 0.5.7", - "syn 2.0.49", - "tracing", - "uuid", -] - [[package]] name = "leptos_macro" version = "0.6.5" @@ -1771,13 +1618,13 @@ dependencies = [ "convert_case 0.6.0", "html-escape", "itertools", - "leptos_hot_reload 0.6.5", + "leptos_hot_reload", "prettyplease", "proc-macro-error", "proc-macro2", "quote", "rstml", - "server_fn_macro 0.6.5", + "server_fn_macro", "syn 2.0.49", "tracing", "uuid", @@ -1791,35 +1638,12 @@ checksum = "4bbbbd77839b4d3189c06319b32aaa3bc43510fb43f9c1bffb8e124a33decd6c" dependencies = [ "cfg-if", "indexmap", - "leptos 0.6.5", + "leptos", "tracing", "wasm-bindgen", "web-sys", ] -[[package]] -name = "leptos_reactive" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f54a525a0edfc8c2bf3ee92aae411800b8b10892c9cd819f8e8a6d4f0d62f3" -dependencies = [ - "base64", - "cfg-if", - "futures", - "indexmap", - "paste", - "pin-project", - "rustc-hash", - "self_cell", - "serde", - "serde-wasm-bindgen 0.5.0", - "serde_json", - "slotmap", - "thiserror", - "tracing", - "wasm-bindgen-futures", -] - [[package]] name = "leptos_reactive" version = "0.6.5" @@ -1837,7 +1661,7 @@ dependencies = [ "rustc-hash", "self_cell", "serde", - "serde-wasm-bindgen 0.6.3", + "serde-wasm-bindgen", "serde_json", "slotmap", "thiserror", @@ -1860,7 +1684,7 @@ dependencies = [ "itertools", "js-sys", "lazy_static", - "leptos 0.6.5", + "leptos", "leptos_integration_utils", "leptos_meta", "linear-map", @@ -1880,22 +1704,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_server" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1517c2024bc47d764e96053e55b927f8a2159e735a0cc47232542b493df9d" -dependencies = [ - "inventory", - "lazy_static", - "leptos_macro 0.5.7", - "leptos_reactive 0.5.7", - "serde", - "server_fn 0.5.7", - "thiserror", - "tracing", -] - [[package]] name = "leptos_server" version = "0.6.5" @@ -1904,10 +1712,10 @@ checksum = "f06b9b860479385991fad54cbee372382aee3c1e75ca78b5da6f8bda90c153e1" dependencies = [ "inventory", "lazy_static", - "leptos_macro 0.6.5", - "leptos_reactive 0.6.5", + "leptos_macro", + "leptos_reactive", "serde", - "server_fn 0.6.5", + "server_fn", "thiserror", "tracing", ] @@ -2198,7 +2006,7 @@ dependencies = [ "gloo-net 0.5.0", "gray_matter", "icondata", - "leptos 0.6.5", + "leptos", "leptos_actix", "leptos_icons", "leptos_meta", @@ -2312,16 +2120,23 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.6" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" +checksum = "dce76ce678ffc8e5675b22aa1405de0b7037e2fdf8913fea40d1926c6fe1e6e7" dependencies = [ "bitflags 2.4.2", "getopts", "memchr", + "pulldown-cmark-escape", "unicase", ] +[[package]] +name = "pulldown-cmark-escape" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d8f9aa0e3cbcfaf8bf00300004ee3b72f74770f9cbac93f6928771f613276b" + [[package]] name = "quote" version = "1.0.35" @@ -2437,42 +2252,6 @@ dependencies = [ "bytecheck", ] -[[package]] -name = "reqwest" -version = "0.11.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http 0.2.11", - "http-body", - "hyper", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - [[package]] name = "rkyv" version = "0.7.44" @@ -2594,17 +2373,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-wasm-bindgen" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" -dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", -] - [[package]] name = "serde-wasm-bindgen" version = "0.6.3" @@ -2683,30 +2451,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "server_fn" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c265de965fe48e09ad8899d0ab1ffebdfa1a9914e4de5ff107b07bd94cf7541" -dependencies = [ - "ciborium", - "const_format", - "gloo-net 0.2.6", - "js-sys", - "lazy_static", - "once_cell", - "proc-macro2", - "quote", - "reqwest", - "serde", - "serde_json", - "serde_qs", - "server_fn_macro_default 0.5.7", - "syn 2.0.49", - "thiserror", - "xxhash-rust", -] - [[package]] name = "server_fn" version = "0.6.5" @@ -2728,7 +2472,7 @@ dependencies = [ "serde", "serde_json", "serde_qs", - "server_fn_macro_default 0.6.5", + "server_fn_macro_default", "thiserror", "url", "wasm-bindgen", @@ -2738,21 +2482,6 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "server_fn_macro" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77000541a62ceeec01eef3ee0f86c155c33dac5fae750ad04a40852c6d5469a" -dependencies = [ - "const_format", - "proc-macro-error", - "proc-macro2", - "quote", - "serde", - "syn 2.0.49", - "xxhash-rust", -] - [[package]] name = "server_fn_macro" version = "0.6.5" @@ -2767,23 +2496,13 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "server_fn_macro_default" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a3353f22e2bcc451074d4feaa37317d9d17dff11d4311928384734ea17ab9ca" -dependencies = [ - "server_fn_macro 0.5.7", - "syn 2.0.49", -] - [[package]] name = "server_fn_macro_default" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "752ed78ec49132d154b922cf5ab6485680cab039a75740c48ea2db621ad481da" dependencies = [ - "server_fn_macro 0.6.5", + "server_fn_macro", "syn 2.0.49", ] @@ -2900,33 +2619,6 @@ dependencies = [ "syn 2.0.49", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tap" version = "1.0.1" @@ -3041,12 +2733,6 @@ dependencies = [ "serde", ] -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - [[package]] name = "tracing" version = "0.1.40" @@ -3079,12 +2765,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typed-builder" version = "0.18.1" @@ -3213,15 +2893,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3480,16 +3151,6 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", -] - [[package]] name = "wyz" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 6bf4e44..3561c7e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ serde = "1.0" chrono = { version = "0.4", features = ["serde"] } # https://carlosted.github.io/icondata/ -leptos_icons = "0.2" +leptos_icons = "0.3" icondata = "0.3" # dependecies for client (enable when csr or hydrate set) @@ -29,11 +29,11 @@ console_error_panic_hook = { version = "0.1", optional = true } # dependecies for server (enable when ssr set) actix-files = { version = "0.6", optional = true } -actix-web = { version = "4.4", features = ["macros"], optional = true } +actix-web = { version = "4.5", features = ["macros"], optional = true } leptos_actix = { version = "0.6", optional = true } futures = { version = "0.3", optional = true } simple_logger = { version = "4.3", optional = true } -pulldown-cmark = { version = "0.9", optional = true } # Markdown parser +pulldown-cmark = { version = "0.10", optional = true } # Markdown parser gray_matter = { version = "0.2", optional = true } # frontmatter parser serde_yaml = { version = "0.9", optional = true } anyhow = { version = "1.0", optional = true } diff --git a/src/app/pages/posts.rs b/src/app/pages/posts.rs index 6c843fb..caf58e3 100644 --- a/src/app/pages/posts.rs +++ b/src/app/pages/posts.rs @@ -11,42 +11,39 @@ use crate::app::{ pub async fn get_posts( tag: Option ) -> Result, ServerFnError> { - leptos_actix::extract( - |data: actix_web::web::Data| async move { - let data = data.into_inner(); - let default = vec![]; - let posts = match tag { - Some(tag) => data.posts_by_tag.get(&tag).unwrap_or(&default), - None => &data.posts - }; - posts.iter() - .map(|post| { - Post { - metadata: post.metadata.clone(), - content: post.content.clone(), - } - }) - .collect::, >() - }, - ).await + let data : actix_web::web::Data = leptos_actix::extract().await?; + let data = data.into_inner(); + + let default = vec![]; + let posts = match tag { + Some(tag) => data.posts_by_tag.get(&tag).unwrap_or(&default), + None => &data.posts + }; + + Ok( + posts.iter() + .map(|post| { + Post { + metadata: post.metadata.clone(), + content: post.content.clone(), + } + }) + .collect::, >() + ) } #[server] pub async fn get_post( slug: String ) -> Result { - leptos_actix::extract( - |data: actix_web::web::Data| async move { - let data = data.into_inner(); - data.posts_by_slug.get(&slug) - .and_then(|post| Some(Post { - metadata: post.metadata.clone(), - content: post.content.clone(), - })) - }, - ) - .await - .and_then(|post| post.ok_or_else(|| ServerFnError::ServerError("Post not found".to_string()))) + let data : actix_web::web::Data = leptos_actix::extract().await?; + let data = data.into_inner(); + + data.posts_by_slug.get(&slug).map(|post| Post { + metadata: post.metadata.clone(), + content: post.content.clone(), + }) + .ok_or(ServerFnError::ServerError("Post not found".to_string())) } #[component] @@ -130,7 +127,7 @@ pub fn PostList() -> impl IntoView { }; let filter_view = move || { - tag().and_then(|tag| Some(view! { + tag().map(|tag| Some(view! {
Tag sélectionné : {tag}
From 1377be120e6af4e72a8e7a80474623c4f1b2533c Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 15:34:34 +0100 Subject: [PATCH 05/12] Update kde contribution --- data_src/posts/kde_contribution.md | 58 +++++++++++++++--------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md index b142815..ddab172 100644 --- a/data_src/posts/kde_contribution.md +++ b/data_src/posts/kde_contribution.md @@ -11,18 +11,17 @@ tags: - linux --- -# Mes premières contributions à KDE - ## Rapide rappel à propos de KDE KDE est un projet qui a pour but de développer des logiciels open-source. Le projet comporte plusieurs éléments les plus connus. - [KF5 ou KF6](https://develop.kde.org/products/frameworks/) est un ensemble de librairies utilisées pour le développement de l'ensemble des logiciels de KDE. Il est basé sur la librairie [QT](https://www.qt.io/). -> Exemple : Kirigami que l'on peut voir comme un "flutter". +> _Exemple_ : Kirigami que l'on peut voir comme un "flutter". > -> Note: +> _Note:_ > > KF5 => Basé sur QT5 +> > KF6 => Basé sur QT6 - [Plasma Shell](https://kde.org/fr/plasma-desktop/) est l'environnement de bureau développé pour Linux. @@ -30,17 +29,17 @@ KDE est un projet qui a pour but de développer des logiciels open-source. Le pr ## Ma configuration Pour développer sur KDE, KDE fournis un utilitaire assez puissant `kdesrc-build`. -Il permet de configurer l'IDE, compiler, exécuter et la gestion des dépendances avec l'aide d'une seule ligne de commande. +Il permet de configurer l'IDE, compiler, exécuter et gérer les dépendances avec l'aide d'une seule ligne de commande. -Pour le configurer, il suffit de suivre la procédure sur ce lien [Configuration de l'environnement de développement](https://community.kde.org/Get_Involved/development/Set_up_a_development_environment). +Pour le configurer, il suffit de suivre la procédure sur ce [lien](https://community.kde.org/Get_Involved/development/Set_up_a_development_environment). ### Mes premières difficultés Il faut savoir que quand j'ai commencé à vouloir contribuer au projet KDE. Le projet était en train de migrer de QT5 à QT6. Donc, les configurations nécessaires pour compiler correctement la version 6 était nettement plus compliqué que maintenant. -Aujourd'hui, il suffit juste de suivre le lien ci-dessus et on peut direct travailler sur KDE 6. -Avant, on avait aucune documentation pour la migrer n'ont plus, il fallait fouiller sur Github ou sur les blogs pour réussir +Il n'y avait aucune documentation pour migrer la configuration fournie de base, il fallait fouiller sur Github ou sur les blogs pour réussir à avoir la configuration. +Aujourd'hui, il suffit juste de suivre le lien ci-dessus et on peut directement travailler sur KDE 6. Pour le développement sur KDE Plasma 6, j'ai dû faire quelques réajustements sur le fichier `~/.config/kdesrc-buildrc`. @@ -63,13 +62,13 @@ include ~/kde/src/kdesrc-build/data/build-include/kf6-kdepim.ksb ### Configurations utiles -1. Désactiver l'arrêt de la compilation lors d'une erreur de compilation. +#### Désactiver l'arrêt de la compilation lors d'une erreur de compilation. En général, `kdesrc-build` s'adapte et retire tous les projets qui dépendent de la dépendance qui n'a pas réussi à compiler. Le projet était encore en cours de développement donc les erreurs de compilations étaient très régulières. J'ai tout simplement désactivé avec l'option `stop-on-failure false`. -2. Activer le support des LSP +#### Activer le support des LSP C'est très pratique si on utilise VSCode ou même n'importe quel outil qui supporte les [LSP](https://microsoft.github.io/language-server-protocol/). @@ -78,14 +77,14 @@ Il suffit d'activer les options: * `compile-commands-linking` => `true` * `compile-commands-export` => `true` -3. Générer les projets VSCode +#### Générer les projets VSCode Il va générer automatiquement les workspaces VSCode avec les extensions recommander et le paramètrage par défaut. Ça permet de travailler dans de très bonne condition avec VSCode. Il suffit de l'activer avec `generate-vscode-project-config true` -### Options utiles pour la commande kdesrc-build +#### Options utiles pour la commande kdesrc-build * `-D` : Pour ne pas inclure les dépendances dans la compilation > Exemple: kdesrc-build -D kate @@ -95,16 +94,17 @@ Il suffit de l'activer avec `generate-vscode-project-config true` ## Ma contribution -J'ai travaillé sur le support de la lampe torche pour l'environnement Plasma Mobile. -La fonctionnalité fonctionnait uniquement sur les [pinephones](https://pine64.org/devices/pinephone/) en utilisant le fichier en dure `/sys/devices/platform/led-controller/leds/white:flash/brightness` +J'ai contribué sur le support de la lampe torche pour l'environnement Plasma Mobile. +La lampe torche fonctionnait uniquement sur les [pinephones](https://pine64.org/devices/pinephone/) en utilisant le fichier en dure `/sys/devices/platform/led-controller/leds/white:flash/brightness` ([Source](https://invent.kde.org/plasma/plasma-mobile/-/blob/f970aa7acf2e9794ab4ed6b75e8f549bece83561/quicksettings/flashlight/flashlightutil.cpp#L17)). +J'ai réécris le module pour que ça fonctionne de manière générale sur tous les téléphones. ### Rappel sur le fonctionnement du noyau Linux autour des leds Pour comprendre comment la fonctionnalité, un petit rappel s'impose autour du fonctionnement des leds avec le noyau Linux. -Dès qu'une led est détecté par le noyau, il va mettre à disposition plusieurs fichiers. -On les trouvent dans le dossier correspondant au driver et aussi l'emplacement physique sur le circuit. -Mais on peut aussi les trouver plus simplement dans `/sys/class/leds/`. +Dès qu'une led est détecté par le noyau, il va mettre à disposition plusieurs fichiers. +On les trouvent dans le dossier correspondant au driver et aussi à l'emplacement physique sur la carte mère ou sur le SOC. +Mais on peut aussi les trouver plus facilement dans le répertoire `/sys/class/leds/`. > sys => Fichiers système > class => Trier par class. @@ -119,23 +119,24 @@ On disposent de plusieurs fichiers importants : ### Explication du fonctionnement de mon code petit à petit -Tout d'abord, il faut savoir que j'utilise la libraire udev. Il est prévu que je migre vers la librairie [Solid](https://invent.kde.org/frameworks/solid). +Tout d'abord, il faut savoir que j'utilise la libraire Udev. Il est prévu que je migre vers la librairie [Solid](https://invent.kde.org/frameworks/solid) une fois le support des leds ajoutées. Udev pour faire simple, c'est une librairie qui permet d'interagir avec les appareils assez directement sans intermédiaire. -La librairie permet de lister, filtrer, détecter si un appareil est connecté/déconnecté, .... +La librairie permet également de lister, filtrer, détecter si un appareil est connecté/déconnecté, .... Pour commencer, je dois d'abord instancier Udev avec pour l'utiliser par la suite. ```cpp struct udev *udev = udev_new(); ``` -Ensuite, je souhaite lister tous les périphériques qui m'intéressent donc ceux appartenant à la class `leds`. -Pour ça, il me suffit de créer un énumerateur qui me permettra de choisir tous mes filtres. +Ensuite, je liste tous les périphériques qui m'intéressent donc ceux appartenant à la class `leds`. +Pour ça, il me suffit de créer un énumerateur sur lequel on appliquera tous les filtres. +> On peut voir une class comme une catégorie d'appareils. ```cpp struct udev_enumerate *enumerate = udev_enumerate_new(udev); ``` -Je choisis de filtrer que ceux qui appartiennent à la class `leds`. +J'applique le filtre pour lister uniquement ceux qui appartiennent à la class `leds`. ```cpp #define TORCH_SUBSYSTEM "leds" @@ -143,7 +144,7 @@ Je choisis de filtrer que ceux qui appartiennent à la class `leds`. udev_enumerate_add_match_subsystem(enumerate, TORCH_SUBSYSTEM); ``` -Je filtre uniquement ceux qui ont dans le nom `flash` ou `torch`. +J'applique le filtre pour lister uniquement ceux qui ont dans le nom `flash` ou `torch`. ```cpp udev_enumerate_add_match_sysname(enumerate, "*:torch"); @@ -156,9 +157,8 @@ Puis je lance le scan avec mes filtres. udev_enumerate_scan_devices(enumerate); ``` - Au début, il faut savoir que je prenais le premier appareil avec le code ci-dessous mais certain téléphone ont une torche de couleur jaune et blanche. -Donc, certain utilisateur malheureusement ne pouvait pas utiliser la fonctionnalité. +Certain utilisateur malheureusement ne pouvait pas utiliser la fonctionnalité. ```cpp struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate); @@ -167,7 +167,7 @@ struct udev_list_entry *entry = udev_list_entry_get_next(devices); [Source](https://invent.kde.org/plasma/plasma-mobile/-/blob/5c6a97caa52d549c0cb02b17fc65a3a7d729d237/quicksettings/flashlight/flashlightutil.cpp) -Donc, j'ai changé le code avec ce code ci-dessous qui permet d'itérer sur tous les appareils. +Donc, j'ai changé le code avec le code ci-dessous qui permet d'itérer sur tous les appareils. ```cpp struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate); @@ -203,8 +203,8 @@ const char *maxBrightness = udev_device_get_sysattr_value(device, "[NOM DU FICHI Je lis d'abord le fichier 'color' et je regarde si la couleur est blanche sinon je continue. Si je ne trouve pas de led de couleur blanche, je prends la dernière valeur récupérée. -Une fois pour appareil trouvé, il me reste plus qu'à récupérer les infos dont j'ai besoin. -Donc, la luminosité maximale `max_brightness` et la luminosité actuelle `brightness` pour correctement initialiser l'interface. +Une fois pour chaque appareil trouvé, il me reste plus qu'à récupérer les infos dont j'ai besoin. +Donc, la luminosité maximale `max_brightness` et la luminosité actuelle `brightness` pour correctement initialiser l'interface de Plasma Mobile. Quand je souhaite changer la valeur, je dois d'abord convertir la valeur entière en chaîne de charactère. @@ -220,7 +220,7 @@ udev_device_set_sysattr_value(m_device, "brightness", nouvelle_valeur_en_char_*) ### Fichier final -Source : https://invent.kde.org/plasma/plasma-mobile/-/blob/d162f96a63600d5b45bb8294afdb84efd85833f9/quicksettings/flashlight/flashlightutil.cpp +[Source](https://invent.kde.org/plasma/plasma-mobile/-/blob/d162f96a63600d5b45bb8294afdb84efd85833f9/quicksettings/flashlight/flashlightutil.cpp) ```cpp /* * SPDX-FileCopyrightText: 2020 Han Young From 909c28050ad0dc0ac7f5a4377930f354901dc799 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 15:56:22 +0100 Subject: [PATCH 06/12] Add order by --- data_src/posts/kde_contribution.md | 4 +- data_src/posts/test.md | 78 ------------------------------ src/app/models/mod.rs | 12 +++-- src/app/models/post.rs | 2 +- 4 files changed, 10 insertions(+), 86 deletions(-) delete mode 100644 data_src/posts/test.md diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md index ddab172..08dae0c 100644 --- a/data_src/posts/kde_contribution.md +++ b/data_src/posts/kde_contribution.md @@ -1,8 +1,8 @@ --- -image_path: "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Test-Logo.svg/783px-Test-Logo.svg.png?20150906031702" +image_path: "https://community.kde.org/images.community/thumb/a/af/Mascot_konqi-base-plasma.png/250px-Mascot_konqi-base-plasma.png" slug: kde_first_conf title: Mes premières contributions à KDE -date: 2023-11-26T00:00:00Z +date: 2024-01-12T00:00:00Z description: Ma première configuration et ma première contribution à l'environnement mobile (Plasma-Mobile). project_link: none draft: true diff --git a/data_src/posts/test.md b/data_src/posts/test.md deleted file mode 100644 index f2ee268..0000000 --- a/data_src/posts/test.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -image_path: "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Test-Logo.svg/783px-Test-Logo.svg.png?20150906031702" -slug: test_layout -title: Testing layout -date: 2023-11-26T00:00:00Z -description: Testing the layout of the site. -project_link: none -draft: true -tags: - - test ---- - -# Heading 1 -## Heading 2 -### Heading 3 -#### Heading 4 -##### Heading 5 -###### Heading 6 - -This is a paragraph tag. It's used `for` displaying text content. - -[Click me to visit Example website!](https://www.example.com) - -Unordered list - -* Item 1 -* Item 2 -* Item 3 - -Ordered list - -1. Item 1 -2. Item 2 -3. Item 3 - - -> It's probably important that images look okay here by default as well: - - - -### Code Blocks - -```python -def hello_world(): - print("Hello World!") -``` - -```rust -fn main() { - println!("Hello World!"); -} -``` - -```javascript -function helloWorld() { - console.log("Hello World!"); -} -``` - -```ruby -def hello_world - puts "Hello World!" -end -``` - -```dockerfile -FROM rust -RUN cargo build --release -CMD ["./target/release/hello_world"] -``` - -```mermaid -graph TD; - A-->B; - A-->C; - B-->D; - C-->D; -``` \ No newline at end of file diff --git a/src/app/models/mod.rs b/src/app/models/mod.rs index bc89fad..9d95d2e 100644 --- a/src/app/models/mod.rs +++ b/src/app/models/mod.rs @@ -1,7 +1,5 @@ mod post; -pub use post::{Post, PostMetadata}; - cfg_if::cfg_if! { if #[cfg(feature = "ssr")] { use std::collections::HashMap; @@ -16,8 +14,10 @@ cfg_if::cfg_if! { impl Data { #[allow(dead_code)] // Use in main.rs pub fn new() -> anyhow::Result { - let posts = crate::app::utils::data_src::get_all::("posts")? - .into_iter() + let mut posts = crate::app::utils::data_src::get_all::("posts")?; + posts.sort_by(|post, post2| post2.metadata.date.cmp(&post.metadata.date)); + + let posts = posts.into_iter() .map(Arc::new) .collect::>(); @@ -47,4 +47,6 @@ cfg_if::cfg_if! { } -} \ No newline at end of file +} + +pub use post::{Post, PostMetadata}; diff --git a/src/app/models/post.rs b/src/app/models/post.rs index 348f6b0..b7a8fa9 100644 --- a/src/app/models/post.rs +++ b/src/app/models/post.rs @@ -38,7 +38,7 @@ cfg_if::cfg_if! { let matter = Matter::::new(); let mut post_data = matter .parse_with_struct::(&content) - .ok_or_else(|| PostDeserializationError::InvalidFrontMatter)?; + .ok_or(PostDeserializationError::InvalidFrontMatter)?; let content = post_data.content; From 4a5fd7c9f6cf65c9149143318c9a842a176c2c2e Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 16:05:36 +0100 Subject: [PATCH 07/12] Update slug kde_contribution.md --- data_src/posts/kde_contribution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md index 08dae0c..f186297 100644 --- a/data_src/posts/kde_contribution.md +++ b/data_src/posts/kde_contribution.md @@ -1,6 +1,6 @@ --- image_path: "https://community.kde.org/images.community/thumb/a/af/Mascot_konqi-base-plasma.png/250px-Mascot_konqi-base-plasma.png" -slug: kde_first_conf +slug: kde_first_contrib title: Mes premières contributions à KDE date: 2024-01-12T00:00:00Z description: Ma première configuration et ma première contribution à l'environnement mobile (Plasma-Mobile). From ec0a1243de7bb92ccd41b774a3a40a01b284dcae Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 17:39:17 +0100 Subject: [PATCH 08/12] Begin add pmbootstrap_custom_build.md --- data_src/posts/kde_contribution.md | 4 + data_src/posts/pmbootstrap_custom_build.md | 158 +++++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 data_src/posts/pmbootstrap_custom_build.md diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md index f186297..46e4282 100644 --- a/data_src/posts/kde_contribution.md +++ b/data_src/posts/kde_contribution.md @@ -369,3 +369,7 @@ void FlashlightUtil::findTorchDevice() udev_unref(udev); } ``` + +### Info utile pour le débogage de KDE Plama Mobile depuis Postmarket OS + +Le fichier de log ce situe dans `~/.local/state/tinydm.log` diff --git a/data_src/posts/pmbootstrap_custom_build.md b/data_src/posts/pmbootstrap_custom_build.md new file mode 100644 index 0000000..4a86b1c --- /dev/null +++ b/data_src/posts/pmbootstrap_custom_build.md @@ -0,0 +1,158 @@ +--- +image_path: "https://postmarketos.org/logo.svg" +slug: pmbootstrap_own_package +title: Compiler sa propre version d'un package Postmarket OS +date: 2024-02-18T00:00:00Z +description: Installation de pmbootstrap et compilation de sa propre version d'un package Postmarket OS +project_link: none +draft: true +tags: + - pmOS + - linux +--- + +## À propos de Postmarket OS + +[Postmarket OS](https://postmarketos.org/) est une distribution basé sur [Alpine](https://www.alpinelinux.org/) conçu pour fonctionner sur les téléphones, tablette +ou sur Raspberry PI. +La communauté autour du projet propose un ensemble d'outils comme `pmbootstrap` qui permet de configurer et d'installer Postmarket OS sur son téléphone. +On peut aussi l'utiliser pour compiler son propre package et l'installer sur son téléphone facilement. + +## Configuration de notre environnement de travail + +Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap). + +Une fois installé et configuré, il faut d'abord executer les commandes suivantes: + +_Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._ +> Le repo pmaports.git stocke tous les packages Alpine avec le fichier fichier `APKBUILD` utilisé par le serveur de compilation. +> +> Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/) +> +> Ce fichier contient toute la procédure pour prepare les sources, compiler le package depuis les sources, le numéro de version +> ainsi que la procédure pour vérifier si le package fonctionne correctement. +> Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels. +```bash +pmbootstrap pull +``` + +_Met à jour le cache de la commande APK depuis l'environnement de travail_ +> L'environnement de travail ce situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/` +```bash +pmbootstrap update +``` + +_Supprime le dossier de la commande chroot_ +> La commande chroot permet de changer la racine Linux. +> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel. +> +> C'est très utilisé par pmbootstrap pour configurer le système Alpine. +> Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier. +> +> Dans notre cas, il correspont au système pour le téléphone utilisé pour le configuré avant de l'installer ou de le tester sur notre téléphone. +> +> Par défaut, il se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` +```bash +pmbootstrap zap +``` + +_[Optionnel] Changer la branche du repo [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git)_ +> `$workdir` par défaut se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` +> Example de branche utile : `kde-nightly` +```bash +git -C $workdir checkout [branch] +``` + +## Compilation de notre package Alpine + +Pour compiler le package, on utilise la commande `pmbootstrap build [package_name]`. + +_Example de commande_ +```bash +pmbootstrap \ + -mp https://nightly.postmarketos.org/plasma-mobile/packages/ \ + -mp http://mirror.postmarketos.org/postmarketos/ \ + --details-to-stdout \ + -j 32 \ + -t 3600 -v \ + build plasma-mobile \ + --src $home/plasma-mobile/ \ + --arch aarch64 \ + -i \ + -n +``` + +Dans cette example, j'ai utilisé les arguments suivants: + +* `-mp` : Permet de définir un repository Alpine pour installer les packages. +> Dans l'example, j'utilise deux repos +> +> `https://nightly.postmarketos.org/plasma-mobile/packages/` : Contient la version en cours de développement de KDE Plasma Mobile +> +> `http://mirror.postmarketos.org/postmarketos/` : Le mirroir officiel de Postmarket OS + +* `--details-to-stdout` : Affiche les logs stocké dans le fichier dans la console +* `-j N` : Défini le nombre core utilisé pour la compilation +> Dans mon cas, 32 core sur mon CPU. +* `-t [En seconde]` : Le nombre de secondes sans nouveau log dans le fichier avant d'abandonner la compilation +> Changé à 3600 secondes car plasma-mobile est assez long à compilé et il ne génère aucun log. +* `-v` : Mode verbeux pour les logs dans le fichier +* `--src` : Change les sources du package. Par défaut ce sont les sources défini dans le fichier `APKBUILD` +> Pour ma part, je souhaite utiliser mon propre code pour tester +* `--arch [arch]` : L'architecture CPU du téléphone +> Pour ma part, mon téléphone est en arm64v8 donc `aarch64` +* `-n` : Permet d'éviter de compiler les dépendances du package. +> En général, c'est pas recommandé par Alpine mais dans mon cas, je souhaite utilisé les dépendances depuis le repo +> mirroir officiel de Postmarket OS. +* `-i` : Permet de dire de compiler uniquement les dépendances du package défini dans le fichier `APKBUILD` +> Dans mon cas, il vient en complément de l'option `-n`, ça me permet de m'assurer de ne rien build. +> Sans cette option, il risque de compiler les sous-dépendances du package comme le noyau Linux. + +Pour plus d'informations, il suffit de taper la commande + +```bash +pmbootstrap build --help +``` + +Et pour avoir les arguments générals + +```bash +pmbootstrap --help +``` + +## Envoie du package sur le téléphone + +Une fois le package compilé, il suffit de demandé à `pmbootstrap` de l'envoyé sur notre téléphon via la connexion SSH. +Avec `pmbootstrap`, on utilise la commande `sideload` comme dans l'example ci-dessous. + +```bash +pmbootstrap sideload plasma-mobile \ + --host [SSH HOST] \ + --port [SSH PORT] \ + --user [SSH USER] \ + --arch [ARCH] \ + --install-key +``` + +On a les arguments suivants: + +* `--host [SSH HOST]` (Ex: 192.168.1.1) +* `--port [SSH PORT]` (Ex: 22) +* `--user [SSH USER]` (Ex: 192.168.1.1) +* `--arch [ARCH]` : Permet de modifier la valeur défini pour le téléphone (Ex: aarch64) +* `--install-key` : Permet d'installer la clef utilisé pour la vérification des packages de la machine actuelle. +> Tout gestionnaire de paquet comme APK, vérifie si le paquet est valide par rapport à la signature électronique du mainteneur du paquet. +> Dans notre cas, la signature ne sera pas valide car le paquet n'est pas compilé par le mainteneur original donc ont rajoute notre signature. + + +Pour revenir en arrière, il suffit de taper la commande ci-dessous depuis le téléphone ou depuis la connexion SSH +> APK va réinstaller les paquets depuis les repos officiels. +```bash +sudo apk upgrade -a +``` + +En cas de problème liée à des conflits de fichier, on peut utiliser cette commande +> Cette commande va forcer APK à écraser les fichiers en conflit. +```bash +sudo apk fix --force +``` \ No newline at end of file From 69093706c21e2c3117c27e125a036b6903b9ee97 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 17:54:46 +0100 Subject: [PATCH 09/12] Fix typos --- data_src/posts/pmbootstrap_custom_build.md | 75 +++++++++++----------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/data_src/posts/pmbootstrap_custom_build.md b/data_src/posts/pmbootstrap_custom_build.md index 4a86b1c..c0e1763 100644 --- a/data_src/posts/pmbootstrap_custom_build.md +++ b/data_src/posts/pmbootstrap_custom_build.md @@ -1,9 +1,9 @@ --- image_path: "https://postmarketos.org/logo.svg" -slug: pmbootstrap_own_package -title: Compiler sa propre version d'un package Postmarket OS +slug: pmbootstrap_own_paquet +title: Compiler un paquet Postmarket OS date: 2024-02-18T00:00:00Z -description: Installation de pmbootstrap et compilation de sa propre version d'un package Postmarket OS +description: Installation de pmbootstrap et compilation d'un paquet Postmarket OS project_link: none draft: true tags: @@ -13,43 +13,43 @@ tags: ## À propos de Postmarket OS -[Postmarket OS](https://postmarketos.org/) est une distribution basé sur [Alpine](https://www.alpinelinux.org/) conçu pour fonctionner sur les téléphones, tablette +[Postmarket OS](https://postmarketos.org/) est une distribution basée sur [Alpine](https://www.alpinelinux.org/) conçut pour fonctionner sur téléphones, tablette ou sur Raspberry PI. La communauté autour du projet propose un ensemble d'outils comme `pmbootstrap` qui permet de configurer et d'installer Postmarket OS sur son téléphone. -On peut aussi l'utiliser pour compiler son propre package et l'installer sur son téléphone facilement. +On peut aussi l'utiliser pour compiler son propre paquet et l'installer sur son téléphone facilement. ## Configuration de notre environnement de travail Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap). -Une fois installé et configuré, il faut d'abord executer les commandes suivantes: +Une fois installé et configuré, il faut d'abord exécuter les commandes suivantes : _Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._ -> Le repo pmaports.git stocke tous les packages Alpine avec le fichier fichier `APKBUILD` utilisé par le serveur de compilation. +> Le repo pmaports.git stocke tous les paquets Alpine avec le fichier fichier `APKBUILD` utilisé par le serveur de compilation. > > Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/) > -> Ce fichier contient toute la procédure pour prepare les sources, compiler le package depuis les sources, le numéro de version -> ainsi que la procédure pour vérifier si le package fonctionne correctement. +> Ce fichier contient toute la procédure pour préparer les sources, compiler le paquet depuis les sources, le numéro de version +> ainsi que la procédure pour vérifier si le paquet fonctionne correctement. > Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels. ```bash pmbootstrap pull ``` _Met à jour le cache de la commande APK depuis l'environnement de travail_ -> L'environnement de travail ce situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/` +> L'environnement de travail se situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/` ```bash pmbootstrap update ``` _Supprime le dossier de la commande chroot_ > La commande chroot permet de changer la racine Linux. -> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel. +> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment-là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel. > > C'est très utilisé par pmbootstrap pour configurer le système Alpine. > Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier. > -> Dans notre cas, il correspont au système pour le téléphone utilisé pour le configuré avant de l'installer ou de le tester sur notre téléphone. +> Dans notre cas, il correspond au système pour le téléphone utilisé pour le configuré avant de l'installer ou de le tester sur notre téléphone. > > Par défaut, il se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` ```bash @@ -58,19 +58,19 @@ pmbootstrap zap _[Optionnel] Changer la branche du repo [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git)_ > `$workdir` par défaut se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` -> Example de branche utile : `kde-nightly` +> Exemple de branche utile : `kde-nightly` ```bash git -C $workdir checkout [branch] ``` -## Compilation de notre package Alpine +## Compilation de notre paquet Alpine -Pour compiler le package, on utilise la commande `pmbootstrap build [package_name]`. +Pour compiler le paquet, on utilise la commande `pmbootstrap build [paquet_name]`. -_Example de commande_ +_Exemple de commande_ ```bash pmbootstrap \ - -mp https://nightly.postmarketos.org/plasma-mobile/packages/ \ + -mp https://nightly.postmarketos.org/plasma-mobile/paquets/ \ -mp http://mirror.postmarketos.org/postmarketos/ \ --details-to-stdout \ -j 32 \ @@ -82,31 +82,31 @@ pmbootstrap \ -n ``` -Dans cette example, j'ai utilisé les arguments suivants: +Dans cet exemple, j'ai utilisé les arguments suivants: -* `-mp` : Permet de définir un repository Alpine pour installer les packages. -> Dans l'example, j'utilise deux repos +* `-mp` : Permet de définir un repository Alpine pour installer les paquets. +> Dans l'exemple, j'utilise deux repos > -> `https://nightly.postmarketos.org/plasma-mobile/packages/` : Contient la version en cours de développement de KDE Plasma Mobile +> `https://nightly.postmarketos.org/plasma-mobile/paquets/` : Contient la version en cours de développement de KDE Plasma Mobile > -> `http://mirror.postmarketos.org/postmarketos/` : Le mirroir officiel de Postmarket OS +> `http://mirror.postmarketos.org/postmarketos/` : Le miroir officiel de Postmarket OS * `--details-to-stdout` : Affiche les logs stocké dans le fichier dans la console * `-j N` : Défini le nombre core utilisé pour la compilation > Dans mon cas, 32 core sur mon CPU. * `-t [En seconde]` : Le nombre de secondes sans nouveau log dans le fichier avant d'abandonner la compilation -> Changé à 3600 secondes car plasma-mobile est assez long à compilé et il ne génère aucun log. +> Changé par 3600 secondes, car plasma-mobile est assez long à compilé et il ne génère aucun log. * `-v` : Mode verbeux pour les logs dans le fichier -* `--src` : Change les sources du package. Par défaut ce sont les sources défini dans le fichier `APKBUILD` +* `--src` : Change les sources du paquet. Par défaut ce sont les sources définies dans le fichier `APKBUILD` > Pour ma part, je souhaite utiliser mon propre code pour tester * `--arch [arch]` : L'architecture CPU du téléphone > Pour ma part, mon téléphone est en arm64v8 donc `aarch64` -* `-n` : Permet d'éviter de compiler les dépendances du package. -> En général, c'est pas recommandé par Alpine mais dans mon cas, je souhaite utilisé les dépendances depuis le repo -> mirroir officiel de Postmarket OS. -* `-i` : Permet de dire de compiler uniquement les dépendances du package défini dans le fichier `APKBUILD` +* `-n` : Permet d'éviter de compiler les dépendances du paquet. +> En général, ce n'est pas recommandé par Alpine, mais dans mon cas, je souhaite utiliser les dépendances depuis le repo +> miroir officiel de Postmarket OS. +* `-i` : Permet de dire de compiler uniquement les dépendances du paquet défini dans le fichier `APKBUILD` > Dans mon cas, il vient en complément de l'option `-n`, ça me permet de m'assurer de ne rien build. -> Sans cette option, il risque de compiler les sous-dépendances du package comme le noyau Linux. +> Sans cette option, il risque de compiler les sous-dépendances du paquet comme le noyau Linux. Pour plus d'informations, il suffit de taper la commande @@ -114,16 +114,16 @@ Pour plus d'informations, il suffit de taper la commande pmbootstrap build --help ``` -Et pour avoir les arguments générals +Et pour avoir les arguments généraux ```bash pmbootstrap --help ``` -## Envoie du package sur le téléphone +## Envoie du paquet sur le téléphone -Une fois le package compilé, il suffit de demandé à `pmbootstrap` de l'envoyé sur notre téléphon via la connexion SSH. -Avec `pmbootstrap`, on utilise la commande `sideload` comme dans l'example ci-dessous. +Une fois le paquet compilé, il suffit de demander à `pmbootstrap` de l'envoyer sur notre téléphone via la connexion SSH. +Avec `pmbootstrap`, on utilise la commande `sideload` comme dans l'exemple ci-dessous. ```bash pmbootstrap sideload plasma-mobile \ @@ -134,16 +134,15 @@ pmbootstrap sideload plasma-mobile \ --install-key ``` -On a les arguments suivants: +On a les arguments suivants : * `--host [SSH HOST]` (Ex: 192.168.1.1) * `--port [SSH PORT]` (Ex: 22) * `--user [SSH USER]` (Ex: 192.168.1.1) -* `--arch [ARCH]` : Permet de modifier la valeur défini pour le téléphone (Ex: aarch64) -* `--install-key` : Permet d'installer la clef utilisé pour la vérification des packages de la machine actuelle. +* `--arch [ARCH]` : Permet de modifier la valeur définie pour le téléphone (Ex : aarch64) +* `--install-key` : Permet d'installer la clef utilisée pour la vérification des paquets de la machine actuelle. > Tout gestionnaire de paquet comme APK, vérifie si le paquet est valide par rapport à la signature électronique du mainteneur du paquet. -> Dans notre cas, la signature ne sera pas valide car le paquet n'est pas compilé par le mainteneur original donc ont rajoute notre signature. - +> Dans notre cas, la signature ne sera pas valide, car le paquet n'est pas compilé par le mainteneur original donc il suffit de rajouter notre signature. Pour revenir en arrière, il suffit de taper la commande ci-dessous depuis le téléphone ou depuis la connexion SSH > APK va réinstaller les paquets depuis les repos officiels. From 777d7d3519e3456ac0bb16fe177edcf57cafc13b Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 18:02:23 +0100 Subject: [PATCH 10/12] Re arrange pmbootstrap_custom_build.md --- data_src/posts/pmbootstrap_custom_build.md | 50 +++++++++++----------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/data_src/posts/pmbootstrap_custom_build.md b/data_src/posts/pmbootstrap_custom_build.md index c0e1763..e6208ca 100644 --- a/data_src/posts/pmbootstrap_custom_build.md +++ b/data_src/posts/pmbootstrap_custom_build.md @@ -13,7 +13,7 @@ tags: ## À propos de Postmarket OS -[Postmarket OS](https://postmarketos.org/) est une distribution basée sur [Alpine](https://www.alpinelinux.org/) conçut pour fonctionner sur téléphones, tablette +[Postmarket OS](https://postmarketos.org/) est une distribution basée sur [Alpine](https://www.alpinelinux.org/) conçut pour fonctionner sur téléphone, tablette ou sur Raspberry PI. La communauté autour du projet propose un ensemble d'outils comme `pmbootstrap` qui permet de configurer et d'installer Postmarket OS sur son téléphone. On peut aussi l'utiliser pour compiler son propre paquet et l'installer sur son téléphone facilement. @@ -22,46 +22,48 @@ On peut aussi l'utiliser pour compiler son propre paquet et l'installer sur son Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap). -Une fois installé et configuré, il faut d'abord exécuter les commandes suivantes : +Une fois installé et configuré, il faut d'abord préparé son environnement de travail. _Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._ -> Le repo pmaports.git stocke tous les paquets Alpine avec le fichier fichier `APKBUILD` utilisé par le serveur de compilation. -> -> Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/) -> -> Ce fichier contient toute la procédure pour préparer les sources, compiler le paquet depuis les sources, le numéro de version -> ainsi que la procédure pour vérifier si le paquet fonctionne correctement. -> Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels. ```bash pmbootstrap pull ``` +> Le repo pmaports.git stocke tous les paquets Alpine avec le fichier `APKBUILD` utilisé par le serveur de compilation. +> +> Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/) +> +> Ce fichier contient toute la procédure pour préparer les sources, compiler le paquet depuis les sources, le numéro de version +> ainsi que la procédure pour vérifier si le paquet fonctionne correctement. +> Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels. _Met à jour le cache de la commande APK depuis l'environnement de travail_ -> L'environnement de travail se situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/` ```bash pmbootstrap update ``` +> L'environnement de travail se situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/` + _Supprime le dossier de la commande chroot_ -> La commande chroot permet de changer la racine Linux. -> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment-là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel. -> -> C'est très utilisé par pmbootstrap pour configurer le système Alpine. -> Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier. -> -> Dans notre cas, il correspond au système pour le téléphone utilisé pour le configuré avant de l'installer ou de le tester sur notre téléphone. -> -> Par défaut, il se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` ```bash pmbootstrap zap ``` +> La commande chroot permet de changer la racine Linux. +> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment-là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel. +> +> C'est très utilisé par pmbootstrap pour configurer le système Alpine. +> Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier. +> +> Dans notre cas, il correspond au système de notre téléphone pour le configuré avant de l'installer ou de le tester sur notre appareil. +> +> Par défaut, il se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` _[Optionnel] Changer la branche du repo [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git)_ -> `$workdir` par défaut se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` -> Exemple de branche utile : `kde-nightly` ```bash git -C $workdir checkout [branch] ``` +> `$workdir` par défaut se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/` +> +> Exemple de branche utile : `kde-nightly` ## Compilation de notre paquet Alpine @@ -145,13 +147,13 @@ On a les arguments suivants : > Dans notre cas, la signature ne sera pas valide, car le paquet n'est pas compilé par le mainteneur original donc il suffit de rajouter notre signature. Pour revenir en arrière, il suffit de taper la commande ci-dessous depuis le téléphone ou depuis la connexion SSH -> APK va réinstaller les paquets depuis les repos officiels. ```bash sudo apk upgrade -a ``` +> APK va réinstaller les paquets depuis les repos officiels. En cas de problème liée à des conflits de fichier, on peut utiliser cette commande -> Cette commande va forcer APK à écraser les fichiers en conflit. ```bash sudo apk fix --force -``` \ No newline at end of file +``` +> Cette commande va forcer APK à écraser les fichiers en conflit. From b3079db885ce07380d70904abd6b6d1198665f55 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 18:02:52 +0100 Subject: [PATCH 11/12] Fix typos --- data_src/posts/pmbootstrap_custom_build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_src/posts/pmbootstrap_custom_build.md b/data_src/posts/pmbootstrap_custom_build.md index e6208ca..67307a5 100644 --- a/data_src/posts/pmbootstrap_custom_build.md +++ b/data_src/posts/pmbootstrap_custom_build.md @@ -22,7 +22,7 @@ On peut aussi l'utiliser pour compiler son propre paquet et l'installer sur son Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap). -Une fois installé et configuré, il faut d'abord préparé son environnement de travail. +Une fois installé et configuré, il faut d'abord préparer son environnement de travail. _Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._ ```bash From 4bb25d9304a73af2466ef176b5d56888081ed799 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 18 Feb 2024 18:09:21 +0100 Subject: [PATCH 12/12] Fix typos --- data_src/posts/kde_contribution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_src/posts/kde_contribution.md b/data_src/posts/kde_contribution.md index 46e4282..527c7ce 100644 --- a/data_src/posts/kde_contribution.md +++ b/data_src/posts/kde_contribution.md @@ -370,6 +370,6 @@ void FlashlightUtil::findTorchDevice() } ``` -### Info utile pour le débogage de KDE Plama Mobile depuis Postmarket OS +### Info utile pour débugger KDE Plama Mobile depuis Postmarket OS -Le fichier de log ce situe dans `~/.local/state/tinydm.log` +Le fichier de log se situe dans `~/.local/state/tinydm.log`