hydra : Une application Electron entre plusieurs processus
Ce fork Hydra est un lanceur desktop avec Electron et React. Sa compilation comprend aussi un module natif et un composant RPC Python. Ces frontières expliquent la présence de plusieurs chaînes d’outils.
Langages du dépôtTypeScript 81.85%7
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| TypeScript | 5 693 766 | |
| SCSS | 739 993 | |
| Rust | 449 445 | |
| Python | 38 598 | |
| JavaScript | 33 740 | |
| HTML | 981 |
1 autres langages
| NSIS | 0% | 119 |
Aperçu
Pourquoi il existe
Application de bureau orchestrant métadonnées et gestion de ludothèque.
Cas d’usage
Lanceur et gestionnaire de jeux open source.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
Commandes déclarées dans les manifestes
package.json
testnode --import ./scripts/register-ts-node.mjs --test "src/**/*.test.ts"linteslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fixtypechecknpm run typecheck:node && npm run typecheck:webstartelectron-vite previewdevelectron-vite devbuildnpm run typecheck && electron-vite build
Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Build from source and contributing
README.md
Local development requirements
README.md
- Node.js + Yarn
- Python 3.9+ with pip install -r requirements.txt
- Rust toolchain (for hydra-native) After installing dependencies, postinstall now builds the Rust native addon automatically (hydra-native/hydra-native.node). Packaging scripts (yarn build:win, yarn build:mac, yarn build:linux, yarn build:unpack) now run yarn build:python-rpc automatically.
Fonctions et composants 2
- Processus principal et affichage
- package.json dirige Electron vers out/main/index.js. Des vérifications TypeScript distinctes couvrent les parties node et web. Electron-Vite compile l’application, tandis que React et ses bibliothèques appartiennent à l’affichage.
- Modules natifs et Python
- build:native lance un script de module natif. build:python-rpc prépare python_rpc séparément et les paquets de plateforme utilisent ces parcours. Installer les dépendances JavaScript ne constitue donc pas toute la compilation de livraison.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Interface React
- Frontière Electron
- Services du processus principal
- Module natif
- Composant RPC Python
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
n0["Interface React"]
n1["Frontière Electron"]
n2["Services du processus principal"]
n3["Module natif"]
n4["Composant RPC Python"]
n0 --> n1
n1 --> n2
n2 --> n3
n2 --> n4
Version texte du diagramme
- Interface React → Frontière Electron
- Frontière Electron → Services du processus principal
- Services du processus principal → Module natif
- Services du processus principal → Composant RPC Python
Suivre un parcours dans le code
Partez des scripts et distinguez compilation de l’interface, module natif et paquet Python. Examinez ensuite l’API entre processus pour une fonction donnée; les dépendances seules n’indiquent pas son propriétaire.
Types et structure des fichiers
1254 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t497b591ddfee["CheckCloudSaveCustomPathOverlapInput"] {
<<struct>>
}
class t546b0e1d60a3["CheckCloudSaveCustomPathOverlapResult"] {
<<struct>>
}
class t4193b7c58165["CanonicalSnapshotVariant"] {
<<struct>>
}
class t9be9d73de926["CanonicalSnapshotFile"] {
<<struct>>
}
class t9e1524c40c18["CanonicalSnapshot"] {
<<struct>>
}
class te94442ffd312["HashFilesBestEffortResult"] {
<<struct>>
}
class t7de7357401f4["SnapshotAggregateHashFile"] {
<<struct>>
}
class tba32df98af48["BuildSnapshotAggregateHashInput"] {
<<struct>>
}
class t8896e2a0569a["LocalFileHashCacheEntry"] {
<<struct>>
}
class t15b26b607bab["HashedLocalFile"] {
<<struct>>
}
class t111381412a72["HashFilesResult"] {
<<struct>>
}
class t0ff949433faa["SnapshotVariant"] {
<<struct>>
}
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
CheckCloudSaveCustomPathOverlapInput(struct) ·native/hydra-native/src/cloud_save/custom_path_overlap.rs:14CheckCloudSaveCustomPathOverlapResult(struct) ·native/hydra-native/src/cloud_save/custom_path_overlap.rs:30CanonicalSnapshotVariant(struct) ·native/hydra-native/src/cloud_save/hashing/aggregate.rs:11CanonicalSnapshotFile(struct) ·native/hydra-native/src/cloud_save/hashing/aggregate.rs:22CanonicalSnapshot(struct) ·native/hydra-native/src/cloud_save/hashing/aggregate.rs:32HashFilesBestEffortResult(struct) ·native/hydra-native/src/cloud_save/hashing/batch.rs:12SnapshotAggregateHashFile(struct) ·native/hydra-native/src/cloud_save/hashing/types.rs:6BuildSnapshotAggregateHashInput(struct) ·native/hydra-native/src/cloud_save/hashing/types.rs:15LocalFileHashCacheEntry(struct) ·native/hydra-native/src/cloud_save/hashing/types.rs:22HashedLocalFile(struct) ·native/hydra-native/src/cloud_save/hashing/types.rs:33HashFilesResult(struct) ·native/hydra-native/src/cloud_save/hashing/types.rs:43SnapshotVariant(struct) ·native/hydra-native/src/cloud_save/identity/mod.rs:15
Référence
1335 / 1335 fichiers admissibles lus (1725 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 1 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["hydra"]
f0["README.md"]
root --> f0
f1["electron.vite.config.ts"]
root --> f1
f2["package.json"]
root --> f2
f3[".eslintrc.cjs"]
root --> f3
f4[".prettierrc.cjs"]
root --> f4
f5["commitlint.config.js"]
root --> f5
f6["requirements.txt"]
root --> f6
f7["python_rpc/main.py"]
root --> f7
f8["python_rpc/setup.py"]
root --> f8
f9["python_rpc/torrent_downloader.py"]
root --> f9
f10["scripts/build-native-addon.cjs"]
root --> f10
f11["scripts/inspect-ps1-memcard.cjs"]
root --> f11
f12["scripts/inspect-ps2-memcard.cjs"]
root --> f12
f13["scripts/postinstall.cjs"]
root --> f13
f14["scripts/register-ts-node.mjs"]
root --> f14
f15["scripts/upload-build.cjs"]
root --> f15