gedcom-ts 2026.6.0 → 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 +91 -72
- package/README.md +122 -118
- 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,17 +2,37 @@
|
|
|
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
|
+
|
|
12
|
+
## [2026.6.1] - 2026-06-09
|
|
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
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
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`).
|
|
24
|
+
|
|
5
25
|
## [2026.6.0] - 2026-06-01
|
|
6
26
|
|
|
7
27
|
### Added
|
|
8
28
|
|
|
9
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).
|
|
10
|
-
-
|
|
30
|
+
- `**ReadGed.objeRecordsById`\*\* : map des OBJE absorbés depuis le fichier (round-trip via `GedcomExportOptions.objeRecordsById`).
|
|
11
31
|
- **Types et utilitaires OBJE** : `ObjeRecord`, `ObjeFileEntry`, `primaryObjeFileUri`, `parseStandaloneObjeBlock`, `formatObjeRecordBlock`, `guessMediFromForm`, `registerObjeRecord`.
|
|
12
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`.
|
|
13
33
|
- **Détection et lecture** : `isAudioInterviewAct`, `isAudioInterviewEvenType`, `getAudioInterviewTranscription`, `getAudioInterviewMedia`, `getAudioInterviewObjeRecords`, `primaryAudioInterviewUri`, `nextObjeXrefId`.
|
|
14
34
|
- **Constantes** : `GEDCOM_7_EVEN_TYPE_AUDIO_INTERVIEW`, `GEDCOM_7_EVEN_TYPE_ORAL_HISTORY`.
|
|
15
|
-
-
|
|
35
|
+
- `**GedcomExportOptionsEdit.setObjeRecordsById`** / `**clearObjeRecordsById\*\*`.
|
|
16
36
|
- **Tests** : `parseStandaloneObje`, `guessMediFromForm`, `audioInterviewAct`, extension des specs export / import `maximal70`.
|
|
17
37
|
|
|
18
38
|
### Changed
|
|
@@ -31,10 +51,10 @@ All notable changes of gedcom-ts
|
|
|
31
51
|
### Added
|
|
32
52
|
|
|
33
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.
|
|
34
|
-
- **RTL arabe / hébreu** : `isBookletLocaleRtl`, `bookletTextDirection`, mise en page PDF miroir ;
|
|
35
|
-
- **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.
|
|
36
56
|
- **Rendu bi-police** : Helvetica pour le latin + Noto pour arabe / hébreu / chinois.
|
|
37
|
-
- **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é).
|
|
38
58
|
- **Exports TypeScript des chunks** : chaque sous-chemin `gedcom-ts/booklet/locale-chunks/*`, `font-chunks/*` et `feature-chunks/*` expose `types` + `import` / `require`.
|
|
39
59
|
- **Manifeste unique** : `scripts/booklet-chunk-manifest.mjs` alimente `build.js` et `package.json` (`npm run sync:exports` ou fin de `build:js`).
|
|
40
60
|
- **API hôte** : `registerBookletPdfFontBytes`, `registerPdfFontkit`, `ensureBookletLocale` — preload explicite des chunks (recommandé Vite/Angular).
|
|
@@ -44,11 +64,11 @@ All notable changes of gedcom-ts
|
|
|
44
64
|
|
|
45
65
|
### Changed
|
|
46
66
|
|
|
47
|
-
-
|
|
67
|
+
- `**pdf-lib` externalisé\*\* : peer dependency ; `@pdf-lib/fontkit` chargé à la demande pour `zh` / `ar` / `he`.
|
|
48
68
|
- **Pipeline build livret** : esbuild → réécriture `./…-chunks/` → `gedcom-ts/booklet/…-chunks/` → obfuscation avec `reservedStrings` sur les chemins d’import dynamiques (analyse statique Vite).
|
|
49
|
-
-
|
|
50
|
-
- **`
|
|
51
|
-
-
|
|
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.
|
|
52
72
|
- **Frise chronologique** : titre et libellé « dates inconnues » localisés.
|
|
53
73
|
- **README** : tableau des tailles, guide d’intégration Vite/Angular.
|
|
54
74
|
|
|
@@ -67,7 +87,7 @@ All notable changes of gedcom-ts
|
|
|
67
87
|
|
|
68
88
|
### Changed
|
|
69
89
|
|
|
70
|
-
-
|
|
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.
|
|
71
91
|
- Critère d’harmonisation : ne signale plus les seules variantes d’orthographe lorsque les coordonnées sont déjà identiques.
|
|
72
92
|
|
|
73
93
|
## [2026.5.2] - 2026-05-16
|
|
@@ -78,27 +98,27 @@ All notable changes of gedcom-ts
|
|
|
78
98
|
|
|
79
99
|
### Changed
|
|
80
100
|
|
|
81
|
-
-
|
|
82
|
-
- **`
|
|
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é.
|
|
83
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.
|
|
84
104
|
|
|
85
105
|
## [2026.5.1] - 2026-05-15
|
|
86
106
|
|
|
87
107
|
### Added
|
|
88
108
|
|
|
89
|
-
-
|
|
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.
|
|
90
110
|
|
|
91
111
|
### Changed
|
|
92
112
|
|
|
93
|
-
- **`
|
|
113
|
+
- `**getCityCoordinates**` : marqué `@deprecated` ; utilise la nouvelle API Nominatim (plus `search.php?city=` ni `XMLHttpRequest`).
|
|
94
114
|
|
|
95
115
|
## [2026.5.0] - 2026-05-15
|
|
96
116
|
|
|
97
117
|
### Versioning
|
|
98
118
|
|
|
99
|
-
À 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** :
|
|
100
120
|
|
|
101
|
-
- format
|
|
121
|
+
- format `**AAAA.M.micro`** (ex. `**2026.5.0\*\*` = mai 2026, première publication de la série) ;
|
|
102
122
|
- remplace l’ancien **semver** (`2.1.0`, `2.0.x`, …) pour les releases applicatives ;
|
|
103
123
|
- la propriété `version` de `package.json` et `GEDCOM_LIBRARY_VERSION` doivent rester **identiques** (vérifié par `tests/version-package-sync.spec.ts`) ;
|
|
104
124
|
- les branches de release peuvent porter le même libellé (ex. `2026.5.0`).
|
|
@@ -107,7 +127,7 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
107
127
|
|
|
108
128
|
### Highlights
|
|
109
129
|
|
|
110
|
-
- Nouvelle couche
|
|
130
|
+
- Nouvelle couche `**src/dataset/`\*_ : mutations du graphe `ReadGed`, opérations famille, validation typée, commandes sûres (`try_`/`CommandResult`) et clones.
|
|
111
131
|
- Extension majeure de la **couche d’édition** (`*Edit`, factories, médias, variants de nom, attributs, options d’export).
|
|
112
132
|
- **Round-trip des notes sous actes** corrigé (import `2 NOTE` / `3 CONT` après `DATE`, ordre d’export `ActLine`).
|
|
113
133
|
- Refactor interne : médias centralisés, buffer des enregistrements préservés, `Person.clone` / `Act.clone`.
|
|
@@ -116,33 +136,33 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
116
136
|
|
|
117
137
|
#### Dataset (`src/dataset/`)
|
|
118
138
|
|
|
119
|
-
-
|
|
120
|
-
- **`
|
|
121
|
-
- **`
|
|
122
|
-
- **`
|
|
123
|
-
- **`
|
|
124
|
-
- **`
|
|
125
|
-
- **`
|
|
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`).
|
|
126
146
|
|
|
127
147
|
#### Import / modèle
|
|
128
148
|
|
|
129
|
-
- **`
|
|
130
|
-
-
|
|
131
|
-
- **`
|
|
132
|
-
- **`
|
|
133
|
-
- **`
|
|
134
|
-
- **`
|
|
135
|
-
-
|
|
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.
|
|
136
156
|
|
|
137
157
|
#### Fluent edit layer (extensions)
|
|
138
158
|
|
|
139
|
-
- **`
|
|
140
|
-
- **`
|
|
141
|
-
- **`
|
|
142
|
-
- **`
|
|
143
|
-
- **`
|
|
144
|
-
- **`
|
|
145
|
-
- **`
|
|
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*`.
|
|
146
166
|
|
|
147
167
|
#### Public API (`src/index.ts`)
|
|
148
168
|
|
|
@@ -163,17 +183,17 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
163
183
|
|
|
164
184
|
### Changed
|
|
165
185
|
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
- **`
|
|
169
|
-
-
|
|
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).
|
|
170
190
|
- CI (`.gitlab-ci.yml`) : ajustements mineurs liés à la release.
|
|
171
191
|
|
|
172
192
|
### Fixed
|
|
173
193
|
|
|
174
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`).
|
|
175
|
-
-
|
|
176
|
-
- 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`.
|
|
177
197
|
|
|
178
198
|
## [2.1.0] - 2026-05-13
|
|
179
199
|
|
|
@@ -195,44 +215,44 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
195
215
|
|
|
196
216
|
#### Export
|
|
197
217
|
|
|
198
|
-
- `GedcomExportOptions` enrichies : `extraTopLevelRecords` (round-trip), `headLanguageTag`,
|
|
199
|
-
- `HEAD`.`SOUR` structuré : émission de
|
|
200
|
-
- Constante **`
|
|
201
|
-
- **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`).
|
|
202
222
|
|
|
203
223
|
#### Domain model — dates, places, events (P1.4)
|
|
204
224
|
|
|
205
|
-
- **`
|
|
225
|
+
- `**DateAct**` :
|
|
206
226
|
- qualificateurs **INT**, **EST**, **CAL** ;
|
|
207
|
-
- phrase finale `(...)` et
|
|
208
|
-
- import
|
|
209
|
-
-
|
|
210
|
-
- entrée date
|
|
211
|
-
- **`
|
|
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) ;
|
|
212
232
|
- tolérance `(...)` sur les bornes d’intervalles (`parseCoreDateValue`) ;
|
|
213
|
-
- format mois/année slash strict
|
|
214
|
-
- **`
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
- **`
|
|
218
|
-
- tri des actes : **`
|
|
219
|
-
- **`
|
|
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.
|
|
220
240
|
|
|
221
241
|
#### Fluent edit layer
|
|
222
242
|
|
|
223
243
|
- Nouveau module `src/edit/` réexporté depuis la racine du paquet :
|
|
224
|
-
- **`
|
|
225
|
-
- **`
|
|
226
|
-
- **`
|
|
227
|
-
- **`
|
|
228
|
-
- **`
|
|
229
|
-
- **`
|
|
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) ;
|
|
230
250
|
- chaînage cohérent (`this`) sur le modèle existant, mutation in-place.
|
|
231
251
|
|
|
232
252
|
#### Public API surface
|
|
233
253
|
|
|
234
254
|
- Types exportés : `PersonGedcomImportOptions`, `GedcomExportOptions`, `TypeDateActSimpleQualifier`, `Gedcom7EventTag`, `IndiGedcomSubLine`, `GedcomDatasetVersion`.
|
|
235
|
-
- 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**`.
|
|
236
256
|
|
|
237
257
|
#### Tests
|
|
238
258
|
|
|
@@ -246,12 +266,12 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
246
266
|
|
|
247
267
|
### Changed
|
|
248
268
|
|
|
249
|
-
- 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é).
|
|
250
270
|
|
|
251
271
|
### Fixed
|
|
252
272
|
|
|
253
273
|
- Export GEDCOM : terminaison correcte `0 TRLR` avec saut de ligne (au lieu du seul tag `TRLR`).
|
|
254
|
-
-
|
|
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.
|
|
255
275
|
|
|
256
276
|
## [2.0.4] - 2026-05-11
|
|
257
277
|
|
|
@@ -377,7 +397,6 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
377
397
|
- jest / test in Person / runner
|
|
378
398
|
- createDirectAncestries
|
|
379
399
|
|
|
380
|
-
|
|
381
400
|
## 1.0.3 - 2019-10-01
|
|
382
401
|
|
|
383
402
|
### Added
|
|
@@ -387,7 +406,7 @@ Les entrées historiques du changelog conservent leurs numéros semver d’origi
|
|
|
387
406
|
## 1.0.2-alpha - 2019-09-01
|
|
388
407
|
|
|
389
408
|
### Added
|
|
390
|
-
|
|
409
|
+
|
|
391
410
|
- export for birth and death in gedcom
|
|
392
411
|
- All identificators can be used for a developper. It's an enum of properties used for all gedcom
|
|
393
412
|
- City is removed and replaced by Place. Place gets more informations
|