UNPKG

gedcom-ts

Version:

TypeScript GEDCOM toolkit for browser apps: import .ged/.zip, edit typed genealogy data, and export GEDCOM or GEDZIP.

82 lines (81 loc) 4.09 kB
import type { ObjeRecord } from "../commons/ObjeRecord"; import { Person } from '../commons/Person'; import { SplitGedcom } from "./SplitedInformations"; import { Place } from "../commons/Place"; import { type GedcomDatasetVersion } from "../utils/gedcom/datasetVersion"; import type { GedcomTransferProgressCallback } from "../utils/gedcom/transferProgress"; /** * Graphe importé depuis un fichier GEDCOM. Les enregistrements de niveau `0` non intégrés au modèle * typé (OBJE, REPO, SOUR, etc.) restent accessibles via {@link preservedTopLevelRecords}. */ export declare class ReadGed extends SplitGedcom { private resolvedInformationFamilies; private resolvedInformationNotes; private famPointerToId; private notePointerToId; /** Enregistrements `0 @O…@ OBJE` absorbés depuis le fichier (multi-`FILE`, `MEDI`, `TRAN`). */ objeRecordsById: Map<number, ObjeRecord>; /** Déduit du bloc `HEAD` (`GEDC`.`VERS`). */ datasetVersion: GedcomDatasetVersion; persons: Person[]; mapPersons: Map<number, Person>; partnersMap: Map<number, Person[]>; childsMap: Map<number, Person[]>; mapFiles: Map<string, File>; placesMap: Map<string, Place>; /** * Index des pointeurs d’individu GEDCOM vers {@link Person.INDI} interne. * Clés typiques : `Homer_Simpson` (xref textuelle), `I12` (xref `@I12@`). */ private individualPointerToIndiNumber; constructor(gedcomContent?: string, mapFiles?: Map<string, File>, placesMap?: Map<string, Place>, mapPersons?: Map<number, Person>); /** * Empty genealogy (no INDI/FAM), same runtime shape as after {@link importGedFile}: * `persons`, `partnersMap`, `childsMap`, `mapPersons`, `placesMap`, `mapFiles` are initialized. */ static empty(options?: { mapFiles?: Map<string, File>; placesMap?: Map<string, Place>; }): ReadGed; static fromGedcomFile(gedcomFile: File, mapFiles?: Map<string, File>, placesMap?: Map<string, Place>, mapPersons?: Map<number, Person>, onProgress?: GedcomTransferProgressCallback, percentRange?: readonly [number, number]): Promise<ReadGed>; private finalizeAfterParse; /** * Reconstruit {@link partnersMap} et {@link childsMap} à partir des pointeurs `FAMS` / `FAMC` * de chaque personne. Peut être rappelé après édition des liens ; chaque appel remplace les * cartes (pas d’accumulation). */ groupPartners(): void; /** * Complète les participants (`act.INDIS`) des actes d’union à partir des familles `FAMS`. * Appelé automatiquement après import ; peut être rappelé après restauration ou édition des liens. */ enrichUnionActParticipants(): void; createDirectAncestries(person: Person): Person[]; generateUniqueIndi(): number; /** * Résout un pointeur GEDCOM d’individu (`@Homer_Simpson@`, `Homer_Simpson`, `@I5@`, `I5`) vers la personne importée. * Utile pour interpréter `1 CHIL @…@` ou `1 HUSB @…@` dans des fichiers à xref textuelle. */ resolveIndividualPointer(raw: string): Person | undefined; /** Enfants rattachés aux unions listées dans `parent.FAMS` (même logique que {@link childsMap}). */ getChildrenForParent(parent: Person): Person[]; /** Enfants d’une famille donnée (identifiant interne `F`, ex. `0` pour `@F0000@`). */ getChildrenOfFamily(familyId: number): Person[]; /** * Reconstruit {@link placesMap} à partir des lieux des actes (après édition du graphe). * Préférez la façade `editReadGed` pour les mutations ; cette méthode est utile si vous modifiez * les personnes hors façade. */ rehydratePlacesFromActs(): void; private haveParentsOfPerson; private createPersons; /** * Xrefs textuelles `0 @Homer_Simpson@ INDI` → entiers uniques (après le max des `@I{n}@` du fichier). */ private buildTextualIndiXrefToSyntheticIdMap; private buildPerson; private hydratePlacesFromActs; private upsertPlace; private linkPersonAsPartner; private linkPersonAsChild; }