Giper Baza è un progetto separato e opzionale — non è parte integrante di $mol. I suoi autori lo descrivono come un database decentralizzato ad alta disponibilità con sincronizzazione in tempo reale senza conflitti: un archivio CRDT che persiste localmente e si replica tra i client senza un server centrale, con firme digitali e cifratura end-to-end. Non ne hai mai bisogno per costruire un'app $mol; ricorrivi solo quando più client o dispositivi devono condividere gli stessi dati dal vivo.Vuoi solo che la tua app continui a funzionare senza rete? Quello è puro offline, e $mol lo gestisce con un service worker — vedi Offline. Giper Baza fa un passo in più: sincronizzare i dati tra i client, non mettere in cache le risorse di un singolo client.Quando modelli davvero i dati con esso, le entità sembrano proprietà reattive ordinarie, e la replica avviene da sola.Questa pagina introduce la forma dell'API. Giper Baza è un argomento vasto — considerala una mappa, non l'intero territorio.
Un'entità è uno schema puro — un insieme di campi tipizzati. Tieni fuori il comportamento; fai la lettura e la scrittura nelle tue viste.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}Ogni campo è un atomo — una cella sincronizzata con un valore tipizzato.
Ottieni l'archivio, raggiungi una lista di entità e mappale in modo reattivo: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}Leggere Done()?.val() dà il valore corrente; scrivere Done(null)!.val(next) lo imposta. Ogni vista che legge l'atomo si ri-renderizza quando lei — o un peer remoto — lo modifica.