gedcom-ts
Version:
TypeScript GEDCOM toolkit for browser apps: import .ged/.zip, edit typed genealogy data, and export GEDCOM or GEDZIP.
47 lines (46 loc) • 2.73 kB
TypeScript
import type { ReadGed } from "../import/ReadGed";
import type { Person } from "../commons/Person";
import type { CreateActInit } from "../edit/factories";
import { type CreateUnionFamilyOptions } from "./graphOps";
import type { ModelConsistencyIssue } from "./validation";
export type CommandOk<T = void> = {
ok: true;
value: T;
warnings?: ModelConsistencyIssue[];
};
export type CommandFail = {
ok: false;
issues: ModelConsistencyIssue[];
};
export type CommandResult<T = void> = CommandOk<T> | CommandFail;
/** Filtre les problèmes qui bloquent une commande (`severity === "error"`). */
export declare function commandBlockingIssues(issues: readonly ModelConsistencyIssue[]): ModelConsistencyIssue[];
/** Préconditions pour {@link tryAddPersonToReadGed} (sans effet de bord). */
export declare function validateAddPersonCommand(readGed: ReadGed, person: Person): ModelConsistencyIssue[];
/**
* Ajoute une personne au graphe après validation des préconditions.
* Effets en cas de succès : `mapPersons`, `persons`, lieux, `groupPartners()` (voir {@link addPersonToReadGed}).
*/
export declare function tryAddPersonToReadGed(readGed: ReadGed, person: Person): CommandResult;
/**
* Retire une personne par `INDI`. Si absent, `ok: false` et aucune mutation.
*/
export declare function tryRemovePersonFromReadGedByIndi(readGed: ReadGed, indi: number): CommandResult;
/** Préconditions pour rattacher un enfant à une famille. */
export declare function validateLinkChildCommand(readGed: ReadGed, child: Person, familyId: number): ModelConsistencyIssue[];
/**
* Rattache `child.FAMC = familyId` puis `groupPartners()`.
* Les avertissements (famille sans conjoints) n’empêchent pas la mutation ; ils sont renvoyés dans `warnings`.
*/
export declare function tryLinkChildToFamily(readGed: ReadGed, child: Person, familyId: number): CommandResult;
/** Préconditions pour {@link tryUnlinkChildFromFamily}. */
export declare function validateUnlinkChildCommand(readGed: ReadGed, child: Person): ModelConsistencyIssue[];
/** Retire `FAMC` sur l’enfant puis `groupPartners()`. */
export declare function tryUnlinkChildFromFamily(readGed: ReadGed, child: Person): CommandResult;
/** Préconditions pour {@link tryCreateMarriageFamily}. */
export declare function validateCreateMarriageCommand(readGed: ReadGed, spouseA: Person, spouseB: Person): ModelConsistencyIssue[];
/**
* Crée une union (nouvel id `F`, actes MARR) après validation.
* @returns l’identifiant de famille en cas de succès.
*/
export declare function tryCreateMarriageFamily(readGed: ReadGed, spouseA: Person, spouseB: Person, init?: CreateActInit | null, unionOptions?: CreateUnionFamilyOptions | null): CommandResult<number>;