UNPKG

gedcom-ts

Version:

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

37 lines (36 loc) 2.71 kB
import type { ReadGed } from "../import/ReadGed"; import { Person } from "../commons/Person"; export type ConsistencySeverity = "error" | "warn"; export type ModelConsistencyIssueCode = "person_missing_indi" | "act_unknown_indi" | "note_unknown_indi" | "marr_missing_spouse_indi" | "duplicate_indi_in_dataset" | "add_person_already_registered" | "add_person_indi_conflict" | "remove_person_not_found" | "link_child_indi_missing" | "link_child_not_bound_to_readged" | "link_child_family_has_no_spouses" | "unlink_child_indi_missing" | "unlink_child_not_bound_to_readged" | "marriage_spouses_same_person" | "marriage_spouses_same_indi" | "marriage_spouse_indi_missing" | "marriage_spouse_not_in_readged" | "famc_family_without_spouses" | "fams_family_without_spouses" | "fams_duplicate_family_id" | "famc_ancestor_cycle"; export type ModelConsistencyIssue = { code: ModelConsistencyIssueCode; severity: ConsistencySeverity; message: string; detail?: unknown; }; export type ValidatePersonContext = { knownIndis?: ReadonlySet<number>; checkMarrParticipants?: boolean; }; export type ValidateReadGedOptions = ValidatePersonContext & { checkDuplicateIndis?: boolean; /** `FAMC` pointant vers une famille sans entrée dans `partnersMap` ou liste vide. */ checkFamcWithoutSpouses?: boolean; /** Chaque `FAMS` sans conjoints dans `partnersMap` (souvent import incomplet). */ checkFamsWithoutSpouses?: boolean; /** Même identifiant de famille plusieurs fois dans `FAMS` d’une même personne. */ checkDuplicateFamsEntries?: boolean; /** Cycle dans la remontée `FAMC` → parents (données impossibles biologiquement). */ checkAncestorCycles?: boolean; }; export type AssertConsistencyOptions = { failOn?: ConsistencySeverity; }; /** Contrôles de base sur une personne (INDI, références d’actes). */ export declare function validatePerson(person: Person, context?: ValidatePersonContext): ModelConsistencyIssue[]; /** Agrège {@link validatePerson} pour toutes les personnes du graphe, plus les contrôles optionnels sur FAM. */ export declare function validateReadGed(readGed: ReadGed, options?: ValidateReadGedOptions): ModelConsistencyIssue[]; /** Lève une erreur si {@link validatePerson} retourne des problèmes selon `failOn` (défaut : seulement `error`). */ export declare function assertPersonConsistent(person: Person, context?: ValidatePersonContext & AssertConsistencyOptions): void; /** Lève une erreur si {@link validateReadGed} retourne des problèmes selon `failOn` (défaut : seulement `error`). */ export declare function assertReadGedConsistent(readGed: ReadGed, options?: ValidateReadGedOptions & AssertConsistencyOptions): void;