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
TypeScript
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;
}