Giper Baza est un projet distinct et optionnel — il ne fait pas partie intégrante de $mol. Ses auteurs le décrivent comme une base de données décentralisée à haute disponibilité avec synchronisation temps réel sans conflit : un magasin CRDT qui persiste localement et se réplique entre clients sans serveur central, avec signatures numériques et chiffrement de bout en bout. Vous n'en avez jamais besoin pour construire une application $mol ; n'y recourez que lorsque plusieurs clients ou appareils doivent partager les mêmes données en direct.Vous voulez simplement que votre application continue de fonctionner sans réseau ? C'est du pur hors-ligne, et $mol s'en charge avec un service worker — voir Hors-ligne. Giper Baza va un cran plus loin : synchroniser les données entre clients, et non mettre en cache les ressources d'un seul client.Lorsque vous modélisez effectivement des données avec, les entités ressemblent à des propriétés réactives ordinaires, et la réplication se produit toute seule.Cette page présente la forme de l'API. Giper Baza est un vaste sujet — considérez ceci comme une carte, pas le territoire complet.
Une entité est un schéma pur — un ensemble de champs typés. Gardez le comportement à l'écart ; faites la lecture et l'écriture dans vos vues.1namespace ${2export class $my_taskextends$giper_baza_entity.with({3Title:$giper_baza_atom_text,4Done:$giper_baza_atom_bool,5CreatedAt:$giper_baza_atom_time,6}){}7}Chaque champ est un atome — une cellule synchronisée avec une valeur typée.
Obtenez le magasin, atteignez une liste d'entités et parcourez-les de manière réactive :1@ $mol_mem2tasks(){3return this.tasks_list().remote_list()4}56@ $mol_mem_key7task_done(id:string,next?:boolean){8const task=this.task(id)9if(next!==undefined)task.Done(null)!.val(next)10return task.Done()?.val()??false11}Lire Done()?.val() donne la valeur actuelle ; écrire Done(null)!.val(next) la définit. Toute vue lisant l'atome se re-rend quand elle — ou un pair distant — la modifie.