gedcom-ts 2026.6.1 → 2026.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -72
- package/README.md +121 -117
- package/dist/booklet.cjs +1 -1
- package/dist/booklet.mjs +1 -1
- package/dist/commons/DateAct.d.ts +1 -0
- package/dist/export/GEDCOM.d.ts +9 -4
- package/dist/export/buildGedzipBlob.d.ts +10 -0
- package/dist/export/familyUnionExport.d.ts +10 -0
- package/dist/import/LoadFile.d.ts +5 -1
- package/dist/import/ReadGed.d.ts +7 -1
- package/dist/import/SplitedInformations.d.ts +2 -1
- package/dist/import/enrichMarriageActsFromUnions.d.ts +6 -0
- package/dist/import/extractZipContent.d.ts +6 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.mjs +1 -1
- package/dist/utils/gedcom/spouseAssoRoles.d.ts +2 -0
- package/dist/utils/gedcom/transferProgress.d.ts +12 -0
- package/dist/version.d.ts +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,8 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes of gedcom-ts
|
|
4
4
|
|
|
5
|
+
## [2026.6.2] - 2026-06-12
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **`DateAct`** : jetons de mois insensibles à la casse (`18 may 1991`, `JAN` / `jan` / `May`) — corrige l’import GEDCOM courant où seuls l’année et parfois le jour étaient conservés.
|
|
10
|
+
- **Qualificateurs de date** : `ABT`, `BEF`, `AFT`, … reconnus en minuscules ; plages `BET … AND …` et `FROM … TO …` insensibles à la casse.
|
|
11
|
+
|
|
5
12
|
## [2026.6.1] - 2026-06-09
|
|
6
13
|
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **Import GEDZIP** : décompression par entrée via `@zip.js/zip.js` (`BlobReader` / lectures aléatoires) à la place de `unzipSync` + `arrayBuffer()` sur l’archive entière — prise en charge d’archives volumineuses sans plafond artificiel côté lib.
|
|
17
|
+
- **Export GEDZIP** : `ExportGedzipFile.gedzipBlob()` / `download()` construisent le ZIP via `ZipWriter` + `BlobReader` par entrée (fini le `zip()` fflate monolithique et les `arrayBuffer()` sur chaque média).
|
|
18
|
+
- **Progression import / export** : `ImportGedFileOptions.onProgress` et `GedcomExportOptions.onProgress` (`GedcomTransferProgress`, phases `zip-extract`, `gedcom-parse`, `zip-build`, …).
|
|
19
|
+
- **Export unions FAM** : actes `MARR` / `DIV` / … avec deux conjoints réexportés sous `0 @F…@ FAM` (et retirés des blocs `INDI`) lorsque les deux époux sont dans l’export — round-trip des `act.INDIS` conjoint.
|
|
20
|
+
|
|
7
21
|
### Fixed
|
|
8
22
|
|
|
9
23
|
- **FORM / MEDI élargis** : TIFF, HEIC, BMP, SVG, MOV, MKV, DjVu, PDF, Office (DOCX, ODT, XLSX), CSV, HTML, SRT, etc. ; PDF et documents numériques → `MEDI ELECTRONIC` (conforme `enumset-MEDI` GEDCOM 7, plus `DOCUMENT`).
|
|
@@ -13,12 +27,12 @@ All notable changes of gedcom-ts
|
|
|
13
27
|
### Added
|
|
14
28
|
|
|
15
29
|
- **Multimédia GEDCOM 7 (`OBJE`)** : import et export complets des enregistrements `0 @O…@ OBJE` avec plusieurs `FILE`, `FORM`, `MEDI` (`AUDIO`, `PHOTO`, `VIDEO`, …), `PHRASE`, `TITL` et variantes `FILE`.`TRAN` (transcodage, WebVTT).
|
|
16
|
-
-
|
|
30
|
+
- `**ReadGed.objeRecordsById`\*\* : map des OBJE absorbés depuis le fichier (round-trip via `GedcomExportOptions.objeRecordsById`).
|
|
17
31
|
- **Types et utilitaires OBJE** : `ObjeRecord`, `ObjeFileEntry`, `primaryObjeFileUri`, `parseStandaloneObjeBlock`, `formatObjeRecordBlock`, `guessMediFromForm`, `registerObjeRecord`.
|
|
18
32
|
- **Entretiens audio / histoire orale** : actes `EVEN` + `TYPE Interview` (ou « Oral history ») avec lien `2 OBJE`, note de transcription (`2 NOTE`) et API dédiée — `createAudioInterviewAct`, `attachAudioInterviewToAct`, `editAct(act).asAudioInterview()`, `editAudioInterviewAct`.
|
|
19
33
|
- **Détection et lecture** : `isAudioInterviewAct`, `isAudioInterviewEvenType`, `getAudioInterviewTranscription`, `getAudioInterviewMedia`, `getAudioInterviewObjeRecords`, `primaryAudioInterviewUri`, `nextObjeXrefId`.
|
|
20
34
|
- **Constantes** : `GEDCOM_7_EVEN_TYPE_AUDIO_INTERVIEW`, `GEDCOM_7_EVEN_TYPE_ORAL_HISTORY`.
|
|
21
|
-
-
|
|
35
|
+
- `**GedcomExportOptionsEdit.setObjeRecordsById`** / `**clearObjeRecordsById\*\*`.
|
|
22
36
|
- **Tests** : `parseStandaloneObje`, `guessMediFromForm`, `audioInterviewAct`, extension des specs export / import `maximal70`.
|
|
23
37
|
|
|
24
38
|
### Changed
|
|
@@ -37,10 +51,10 @@ All notable changes of gedcom-ts
|
|
|
37
51
|
### Added
|
|
38
52
|
|
|
39
53
|
- **Livret multilingue** : traductions dédiées pour les 11 langues du site (`en`, `fr`, `de`, `nl`, `es`, `zh`, `it`, `pt`, `pl`, `ar`, `he`) — messages PDF, dates, lieux, accords de genre et récits narratifs.
|
|
40
|
-
- **RTL arabe / hébreu** : `isBookletLocaleRtl`, `bookletTextDirection`, mise en page PDF miroir ;
|
|
41
|
-
- **Polices PDF intégrées** : Noto Sans Hebrew, Noto Sans Arabic et Noto Sans SC (subset, SIL OFL) en chunks lazy (`dist/font-chunks/`) ; chunk
|
|
54
|
+
- **RTL arabe / hébreu** : `isBookletLocaleRtl`, `bookletTextDirection`, mise en page PDF miroir ; `**bidi-js`** (réordonnancement visuel) et `**naqqash\*\*` (formes contextuelles arabes).
|
|
55
|
+
- **Polices PDF intégrées** : Noto Sans Hebrew, Noto Sans Arabic et Noto Sans SC (subset, SIL OFL) en chunks lazy (`dist/font-chunks/`) ; chunk `**booklet-pdf-font-bytes-zh-ext`\*\* (~1,4 MiB) si le GEDCOM contient des hanzi hors subset de base.
|
|
42
56
|
- **Rendu bi-police** : Helvetica pour le latin + Noto pour arabe / hébreu / chinois.
|
|
43
|
-
- **Architecture lazy du livret** : locales (`dist/locale-chunks/`), polices, logo SVG et frise canvas (`dist/feature-chunks/`) via `import()` — cœur `gedcom-ts/booklet`
|
|
57
|
+
- **Architecture lazy du livret** : locales (`dist/locale-chunks/`), polices, logo SVG et frise canvas (`dist/feature-chunks/`) via `import()` — cœur `gedcom-ts/booklet` ~~75 KiB minifié (~~100 KiB obfusqué).
|
|
44
58
|
- **Exports TypeScript des chunks** : chaque sous-chemin `gedcom-ts/booklet/locale-chunks/*`, `font-chunks/*` et `feature-chunks/*` expose `types` + `import` / `require`.
|
|
45
59
|
- **Manifeste unique** : `scripts/booklet-chunk-manifest.mjs` alimente `build.js` et `package.json` (`npm run sync:exports` ou fin de `build:js`).
|
|
46
60
|
- **API hôte** : `registerBookletPdfFontBytes`, `registerPdfFontkit`, `ensureBookletLocale` — preload explicite des chunks (recommandé Vite/Angular).
|
|
@@ -50,11 +64,11 @@ All notable changes of gedcom-ts
|
|
|
50
64
|
|
|
51
65
|
### Changed
|
|
52
66
|
|
|
53
|
-
-
|
|
67
|
+
- `**pdf-lib` externalisé\*\* : peer dependency ; `@pdf-lib/fontkit` chargé à la demande pour `zh` / `ar` / `he`.
|
|
54
68
|
- **Pipeline build livret** : esbuild → réécriture `./…-chunks/` → `gedcom-ts/booklet/…-chunks/` → obfuscation avec `reservedStrings` sur les chemins d’import dynamiques (analyse statique Vite).
|
|
55
|
-
-
|
|
56
|
-
- **`
|
|
57
|
-
-
|
|
69
|
+
- `**resolveBookletLocale`\*\* : retourne la locale demandée (plus de repli silencieux vers l’anglais).
|
|
70
|
+
- `**drawGedcomTsLogoOnPage**` : async ; logo lazy (`getGedcomTsLogoPaths()`).
|
|
71
|
+
- `**ensureBookletLocale(locale)**` requis avant les APIs sync.
|
|
58
72
|
- **Frise chronologique** : titre et libellé « dates inconnues » localisés.
|
|
59
73
|
- **README** : tableau des tailles, guide d’intégration Vite/Angular.
|
|
60
74
|
|
|
@@ -73,7 +87,7 @@ All notable changes of gedcom-ts
|
|
|
73
87
|
|
|
74
88
|
### Changed
|
|
75
89
|
|
|
76
|
-
-
|
|
90
|
+
- `**findHarmonizationClustersFromActs`\*\* : si plusieurs libellés similaires partagent une seule position GPS et que tous les actes ont des coordonnées, unifie automatiquement le libellé (libellé le plus long) sans cluster d’harmonisation manuel.
|
|
77
91
|
- Critère d’harmonisation : ne signale plus les seules variantes d’orthographe lorsque les coordonnées sont déjà identiques.
|
|
78
92
|
|
|
79
93
|
## [2026.5.2] - 2026-05-16
|
|
@@ -84,27 +98,27 @@ All notable changes of gedcom-ts
|
|
|
84
98
|
|
|
85
99
|
### Changed
|
|
86
100
|
|
|
87
|
-
-
|
|
88
|
-
- **`
|
|
101
|
+
- `**findHarmonizationClustersFromActs`\*\* : union-find sur `citiesAreSimilar` (corrige le cas Pleurtuit 29+11 actes après géoloc complète).
|
|
102
|
+
- `**clusterKeyForCity**` : clé carte basée sur la localité principale (segment avant la virgule), alignée avec le regroupement par similarité.
|
|
89
103
|
- **README** : guide d’intégration géoloc restructuré (section dédiée, tableaux par cas d’usage) ; retrait de la documentation développement interne.
|
|
90
104
|
|
|
91
105
|
## [2026.5.1] - 2026-05-15
|
|
92
106
|
|
|
93
107
|
### Added
|
|
94
108
|
|
|
95
|
-
-
|
|
109
|
+
- `**src/geocode/`\*\* : géocodage Nominatim (`GET /search?q=…&format=jsonv2`), contexte arbre (`inferGeocodeContext`), ranking (`rankGeocodeCandidates`), harmonisation des lieux (`findHarmonizationClusters`, `applyGeocodeCandidateToActs`), utilitaires ville (`normalizeCityKey`, `findCanonicalCityLabel`). `fetch` et `User-Agent` configurables pour les tests.
|
|
96
110
|
|
|
97
111
|
### Changed
|
|
98
112
|
|
|
99
|
-
- **`
|
|
113
|
+
- `**getCityCoordinates**` : marqué `@deprecated` ; utilise la nouvelle API Nominatim (plus `search.php?city=` ni `XMLHttpRequest`).
|
|
100
114
|
|
|
101
115
|
## [2026.5.0] - 2026-05-15
|
|
102
116
|
|
|
103
117
|
### Versioning
|
|
104
118
|
|
|
105
|
-
À partir de cette release, le numéro de version du paquet npm et de **`
|
|
119
|
+
À partir de cette release, le numéro de version du paquet npm et de `**GEDCOM_LIBRARY_VERSION**` (`src/version.ts`, exporté dans `HEAD`.`SOUR`.`VERS`) suit un schéma **CalVer** :
|
|
106
120
|
|
|
107
|
-
- format
|
|
121
|
+
- format `**AAAA.M.micro`** (ex. `**2026.5.0\*\*` = mai 2026, première publication de la série) ;
|
|
108
122
|
- remplace l’ancien **semver** (`2.1.0`, `2.0.x`, …) pour les releases applicatives ;
|
|
109
123
|
- la propriété `version` de `package.json` et `GEDCOM_LIBRARY_VERSION` doivent rester **identiques** (vérifié par `tests/version-package-sync.spec.ts`) ;
|
|
110
124
|
- les branches de release peuvent porter le même libellé (ex. `2026.5.0`).
|
|
@@ -113,7 +127,7 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
113
127
|
|
|
114
128
|
### Highlights
|
|
115
129
|
|
|
116
|
-
- Nouvelle couche
|
|
130
|
+
- Nouvelle couche `**src/dataset/`\*_ : mutations du graphe `ReadGed`, opérations famille, validation typée, commandes sûres (`try_`/`CommandResult`) et clones.
|
|
117
131
|
- Extension majeure de la **couche d’édition** (`*Edit`, factories, médias, variants de nom, attributs, options d’export).
|
|
118
132
|
- **Round-trip des notes sous actes** corrigé (import `2 NOTE` / `3 CONT` après `DATE`, ordre d’export `ActLine`).
|
|
119
133
|
- Refactor interne : médias centralisés, buffer des enregistrements préservés, `Person.clone` / `Act.clone`.
|
|
@@ -122,33 +136,33 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
122
136
|
|
|
123
137
|
#### Dataset (`src/dataset/`)
|
|
124
138
|
|
|
125
|
-
-
|
|
126
|
-
- **`
|
|
127
|
-
- **`
|
|
128
|
-
- **`
|
|
129
|
-
- **`
|
|
130
|
-
- **`
|
|
131
|
-
- **`
|
|
139
|
+
- `**readGedMutations`\*\* : `addPersonToReadGed`, `removePersonFromReadGedByIndi` (mise à jour `mapPersons`, `persons`, lieux, `groupPartners`).
|
|
140
|
+
- `**ReadGedEdit**` / `editReadGed` : `addPerson`, `removePersonByIndi`, `preserved()` → `PreservedTopLevelEdit` (`append`, `insertAt`, `replaceAt`, `removeAt`, `clear`).
|
|
141
|
+
- `**graphOps**` : `nextFamilyId`, `createMarriageFamily`, `linkChildToFamily`, `unlinkChildFromFamily`, `removeFamilyReferencesFromDataset`.
|
|
142
|
+
- `**CreateUnionFamilyOptions**` : `eventTag` sur `createMarriageFamily` / `tryCreateMarriageFamily` (défaut `MARR` ; aussi `ENGA`, `MARB`, `MARC`, `MARL`, `MARS`, `EVEN` + `CreateActInit`, etc.) ; constante `**GEDCOM_7_PAIR_UNION_EVENT_TAGS**`.
|
|
143
|
+
- `**readGedCommands**` : `tryAddPersonToReadGed`, `tryRemovePersonFromReadGedByIndi`, `tryLinkChildToFamily`, `tryUnlinkChildFromFamily`, `tryCreateMarriageFamily` ; `validate*Command` ; `**CommandResult**` / `commandBlockingIssues`.
|
|
144
|
+
- `**validation**` : `ModelConsistencyIssue` avec `code`, `severity` (`error` | `warn`), `validatePerson` / `validateReadGed` ; options `checkMarrParticipants`, `checkDuplicateIndis`, `checkFamcWithoutSpouses`, `checkFamsWithoutSpouses`, `checkDuplicateFamsEntries`, `checkAncestorCycles` ; `assertPersonConsistent` / `assertReadGedConsistent` avec `failOn`.
|
|
145
|
+
- `**cloneModels**` : `clonePerson`, `cloneAct` (délèguent à `Person.clone` / `Act.clone`).
|
|
132
146
|
|
|
133
147
|
#### Import / modèle
|
|
134
148
|
|
|
135
|
-
- **`
|
|
136
|
-
-
|
|
137
|
-
- **`
|
|
138
|
-
- **`
|
|
139
|
-
- **`
|
|
140
|
-
- **`
|
|
141
|
-
-
|
|
149
|
+
- `**PreservedRecordsBuffer**` : encapsulation des blocs `0 …` préservés (`SplitGedcom` / `ReadGed.preservedTopLevelRecords`).
|
|
150
|
+
- `**ReadGed.rehydratePlacesFromActs()**` : reconstruction de `placesMap` après édition manuelle du graphe.
|
|
151
|
+
- `**importGedcomNote**` : `createNoteFromGedcomPayload`, `appendGedcomNoteSubline`, `isPersonLevelGedcomLine`, `isActLevelGedcomNoteLine`, `isGedcomNoteContinuationTag`.
|
|
152
|
+
- `**registerTrackedMedia**` : chemins relatifs uniques pour médias personne / acte.
|
|
153
|
+
- `**uriBasename**` : nom de fichier logique depuis une URI média.
|
|
154
|
+
- `**clonePrimitives**` : briques de copie profonde partagées (dates, lieux, notes, médias, variants, attributs).
|
|
155
|
+
- `**Person.clone(newIndi)**`, `**Act.clone()**` sur les classes domaine.
|
|
142
156
|
|
|
143
157
|
#### Fluent edit layer (extensions)
|
|
144
158
|
|
|
145
|
-
- **`
|
|
146
|
-
- **`
|
|
147
|
-
- **`
|
|
148
|
-
- **`
|
|
149
|
-
- **`
|
|
150
|
-
- **`
|
|
151
|
-
- **`
|
|
159
|
+
- `**factories**` : `createAct`, `createNote`, `createPersonStub`, `createPersonNameVariant`, `createIndiAttribute` (+ types `CreateActInit`, `CreatePersonStubInit`).
|
|
160
|
+
- `**NoteEdit**` / `editNote` ; `**NotesEdit**` : `addNew`, `insertNewAt`, `removeNote`, `indexOfNote`.
|
|
161
|
+
- `**ActMediaEdit**` / `**PersonMediaEdit**` / `**MultimediaFileEdit**` ; `**NameVariantsEdit**` / `**PersonNameVariantEdit**` ; `**IndiAttributesEdit**`.
|
|
162
|
+
- `**ActsEdit**` : `addNew`, `insertNewAt`, `removeAct`, `indexOfAct`.
|
|
163
|
+
- `**ActEdit**` : `notes()`, `multimedia()`, `clearNotes`, `clearMultimedia`.
|
|
164
|
+
- `**PersonEdit**` : `multimedia()`, `nameVariants()`, `attributes()`, `appendFams`, `removeFamsAt`, `removeFamsById`, etc.
|
|
165
|
+
- `**GedcomExportOptionsEdit**` / `editGedcomExportOptions` : `setExtraTopLevelRecords`, `setHeadCopyright`, `setHeadDestination`, `setHeadLanguageTag`, `setHeadSchemaTagDefs`, `clear*`.
|
|
152
166
|
|
|
153
167
|
#### Public API (`src/index.ts`)
|
|
154
168
|
|
|
@@ -169,17 +183,17 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
169
183
|
|
|
170
184
|
### Changed
|
|
171
185
|
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
- **`
|
|
175
|
-
-
|
|
186
|
+
- `**ReadGed`\*\* : `addPerson` / `removePersonByIndi` retirés de la classe ; préférer `editReadGed` ou `addPersonToReadGed` / `removePersonFromReadGedByIndi`.
|
|
187
|
+
- `**Person.addMultimedia` / `addMultimediaFromUri**` et `**Act.addMultimedia` / `addMultimediaFromUri**` : délégation à `registerTrackedMedia`.
|
|
188
|
+
- `**SplitGedcom**` : liste préservée via `PreservedRecordsBuffer` au lieu d’un tableau interne brut.
|
|
189
|
+
- `**package.json**` / `**package-lock.json**` : version `**2026.5.0**` (CalVer).
|
|
176
190
|
- CI (`.gitlab-ci.yml`) : ajustements mineurs liés à la release.
|
|
177
191
|
|
|
178
192
|
### Fixed
|
|
179
193
|
|
|
180
194
|
- **Notes d’acte au réimport** : `parsePersonLine` n’attache plus les `NOTE` de niveau 2 au individu ; `convertToActs` traite `2 NOTE` et `3 CONC`/`CONT` **avant** les blocs `pendingAfterDate` / `Plac` / `Sdate`, ce qui évite de perdre les `3 CONT` lorsque l’export place la note après `DATE` (`ActLine`).
|
|
181
|
-
-
|
|
182
|
-
- Alignement **`
|
|
195
|
+
- `**ReadGedEdit.addPerson`\*\* : discrimination TypeScript correcte sur `CommandResult` (`r.ok === false`).
|
|
196
|
+
- Alignement `**GEDCOM_LIBRARY_VERSION**` ↔ `**package.json**` pour la série `2026.5.0`.
|
|
183
197
|
|
|
184
198
|
## [2.1.0] - 2026-05-13
|
|
185
199
|
|
|
@@ -201,44 +215,44 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
201
215
|
|
|
202
216
|
#### Export
|
|
203
217
|
|
|
204
|
-
- `GedcomExportOptions` enrichies : `extraTopLevelRecords` (round-trip), `headLanguageTag`,
|
|
205
|
-
- `HEAD`.`SOUR` structuré : émission de
|
|
206
|
-
- Constante **`
|
|
207
|
-
- **FAM** : sexes U / X / indéfini sont exportés en
|
|
218
|
+
- `GedcomExportOptions` enrichies : `extraTopLevelRecords` (round-trip), `headLanguageTag`, `**headCopyright`** (`1 COPR`), `**headDestination**` (`1 DEST`), `**headSchemaTagDefs\*\*` (`HEAD`.`SCHMA`/`2 TAG …`).
|
|
219
|
+
- `HEAD`.`SOUR` structuré : émission de `**2 VERS**` + `**2 NAME**` sous `SOUR`, en plus du `CHAR` / `LANG` standard.
|
|
220
|
+
- Constante `**GEDCOM_LIBRARY_VERSION**` (`src/version.ts`, alignée sur `package.json` via test) utilisée pour `2 VERS` à l’export.
|
|
221
|
+
- **FAM** : sexes U / X / indéfini sont exportés en `**1 HUSB`\*\* (placeholder GEDCOM moins biaisé que `WIFE`).
|
|
208
222
|
|
|
209
223
|
#### Domain model — dates, places, events (P1.4)
|
|
210
224
|
|
|
211
|
-
- **`
|
|
225
|
+
- `**DateAct**` :
|
|
212
226
|
- qualificateurs **INT**, **EST**, **CAL** ;
|
|
213
|
-
- phrase finale `(...)` et
|
|
214
|
-
- import
|
|
215
|
-
-
|
|
216
|
-
- entrée date
|
|
217
|
-
- **`
|
|
227
|
+
- phrase finale `(...)` et `**datePhrase`\*\* ;
|
|
228
|
+
- import `**3 PHRASE**` sous `DATE` ;
|
|
229
|
+
- `**3 TIME**` sous `DATE` / `**SDATE**` (`dateTime`) ;
|
|
230
|
+
- entrée date `**YYYY-MM-DD**` / `**YYYY-MM**` ;
|
|
231
|
+
- `**verbatimDatePayload**` pour charges non typées (URI, texte hors parseur) ;
|
|
218
232
|
- tolérance `(...)` sur les bornes d’intervalles (`parseCoreDateValue`) ;
|
|
219
|
-
- format mois/année slash strict
|
|
220
|
-
- **`
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
- **`
|
|
224
|
-
- tri des actes : **`
|
|
225
|
-
- **`
|
|
233
|
+
- format mois/année slash strict `**d{1,2}/d{2,4}**` uniquement (évite les faux positifs sur URL).
|
|
234
|
+
- `**Act**` :
|
|
235
|
+
- `**2 SDATE**` (+ sous-lignes) sur `sdateAct` ;
|
|
236
|
+
- `**2 PHRASE**` niveau événement (`eventPhrases`) ;
|
|
237
|
+
- `**preservedSubrecordPrefix**` / `**preservedSubrecordSuffix**` pour sous-lignes non modélisées (`HUSB`/`AGE`/`4 PHRASE`, `3 DATE` sous `STAT`, …) avec ré-export ;
|
|
238
|
+
- tri des actes : `**DATE**` sinon `**SDATE**` valide.
|
|
239
|
+
- `**Place**` : `**placPhrase**` et import `**3 PHRASE**` direct sous `PLAC` ; export `**3 PHRASE**` pour date et lieu quand présents ; export `**3 TIME**` / blocs `**SDATE**` / `**2 PHRASE**` événement.
|
|
226
240
|
|
|
227
241
|
#### Fluent edit layer
|
|
228
242
|
|
|
229
243
|
- Nouveau module `src/edit/` réexporté depuis la racine du paquet :
|
|
230
|
-
- **`
|
|
231
|
-
- **`
|
|
232
|
-
- **`
|
|
233
|
-
- **`
|
|
234
|
-
- **`
|
|
235
|
-
- **`
|
|
244
|
+
- `**editPerson**` / `PersonEdit` (identité, liens `FAMC` / `FAMS`, name variants, attributes, accès chaîné à `acts()` / `notes()`) ;
|
|
245
|
+
- `**editActs**` / `ActsEdit` (add, replaceAt, removeAt, clear, sortByDate, at) ;
|
|
246
|
+
- `**editAct**` / `ActEdit` (type, indis, date, sdate, place, EVEN, phrases, preserved prefix/suffix) ;
|
|
247
|
+
- `**editDateAct**` / `DateActEdit` (clear, applyGedcomPayload, setExactDate, setQualified, setBetween, setFromTo, setTime, setDatePhrase, setVerbatimPayload) ;
|
|
248
|
+
- `**editPlace**` / `PlaceEdit` (city/county/state/country, GEDCOM 7 payload, placPhrase, coordinates) ;
|
|
249
|
+
- `**editNotes**` / `NotesEdit` (add, replaceAt, removeAt, clear) ;
|
|
236
250
|
- chaînage cohérent (`this`) sur le modèle existant, mutation in-place.
|
|
237
251
|
|
|
238
252
|
#### Public API surface
|
|
239
253
|
|
|
240
254
|
- Types exportés : `PersonGedcomImportOptions`, `GedcomExportOptions`, `TypeDateActSimpleQualifier`, `Gedcom7EventTag`, `IndiGedcomSubLine`, `GedcomDatasetVersion`.
|
|
241
|
-
- Classes / valeurs réexportées depuis l’index : `PersonNameVariant`, `PersonNameTranslation`, `IndiAttribute`, `ActConstructionOptions`, `GEDCOM_7_ALL_EVENT_TAGS`, `GEDCOM_7_EVENT_SORT_ORDER`, `GEDCOM_7_EVENT_TAG_SET`, `selectPrimaryNameVariant`, `extractPersonNameVariants`, `extractIndiAttributes`, `createEmptyReadGed`, `IMPORT_ERR_ZIP_GED_UNREADABLE`,
|
|
255
|
+
- Classes / valeurs réexportées depuis l’index : `PersonNameVariant`, `PersonNameTranslation`, `IndiAttribute`, `ActConstructionOptions`, `GEDCOM_7_ALL_EVENT_TAGS`, `GEDCOM_7_EVENT_SORT_ORDER`, `GEDCOM_7_EVENT_TAG_SET`, `selectPrimaryNameVariant`, `extractPersonNameVariants`, `extractIndiAttributes`, `createEmptyReadGed`, `IMPORT_ERR_ZIP_GED_UNREADABLE`, `**GEDCOM_LIBRARY_VERSION**`.
|
|
242
256
|
|
|
243
257
|
#### Tests
|
|
244
258
|
|
|
@@ -252,12 +266,12 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
252
266
|
|
|
253
267
|
### Changed
|
|
254
268
|
|
|
255
|
-
- Export `FAM` : sexe inconnu / non binaire / absent (`U`, `X`, `undefined`) émet
|
|
269
|
+
- Export `FAM` : sexe inconnu / non binaire / absent (`U`, `X`, `undefined`) émet `**1 HUSB`** au lieu de `**1 WIFE\*\*` pour le rôle conjoint (placeholder GEDCOM moins biaisé).
|
|
256
270
|
|
|
257
271
|
### Fixed
|
|
258
272
|
|
|
259
273
|
- Export GEDCOM : terminaison correcte `0 TRLR` avec saut de ligne (au lieu du seul tag `TRLR`).
|
|
260
|
-
-
|
|
274
|
+
- `**ReadGed.groupPartners()**` : les cartes `partnersMap` et `childsMap` sont vidées avant reconstruction, afin que des rappels successifs (après édition des liens en mémoire) ne dupliquent plus conjoints ni enfants.
|
|
261
275
|
|
|
262
276
|
## [2.0.4] - 2026-05-11
|
|
263
277
|
|
|
@@ -383,7 +397,6 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
383
397
|
- jest / test in Person / runner
|
|
384
398
|
- createDirectAncestries
|
|
385
399
|
|
|
386
|
-
|
|
387
400
|
## 1.0.3 - 2019-10-01
|
|
388
401
|
|
|
389
402
|
### Added
|
|
@@ -393,7 +406,7 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
393
406
|
## 1.0.2-alpha - 2019-09-01
|
|
394
407
|
|
|
395
408
|
### Added
|
|
396
|
-
|
|
409
|
+
|
|
397
410
|
- export for birth and death in gedcom
|
|
398
411
|
- All identificators can be used for a developper. It's an enum of properties used for all gedcom
|
|
399
412
|
- City is removed and replaced by Place. Place gets more informations
|