@treeviz/gedcom-parser 1.0.1
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/LICENSE +21 -0
- package/README.md +954 -0
- package/dist/classes/common.d.ts +87 -0
- package/dist/classes/common.d.ts.map +1 -0
- package/dist/classes/common.js +481 -0
- package/dist/classes/date.d.ts +26 -0
- package/dist/classes/date.d.ts.map +1 -0
- package/dist/classes/date.js +176 -0
- package/dist/classes/fam.d.ts +19 -0
- package/dist/classes/fam.d.ts.map +1 -0
- package/dist/classes/fam.js +38 -0
- package/dist/classes/fams.d.ts +16 -0
- package/dist/classes/fams.d.ts.map +1 -0
- package/dist/classes/fams.js +41 -0
- package/dist/classes/gedcom.d.ts +89 -0
- package/dist/classes/gedcom.d.ts.map +1 -0
- package/dist/classes/gedcom.js +421 -0
- package/dist/classes/index.d.ts +19 -0
- package/dist/classes/index.d.ts.map +1 -0
- package/dist/classes/index.js +19 -0
- package/dist/classes/indi.d.ts +298 -0
- package/dist/classes/indi.d.ts.map +1 -0
- package/dist/classes/indi.js +2049 -0
- package/dist/classes/indis.d.ts +54 -0
- package/dist/classes/indis.d.ts.map +1 -0
- package/dist/classes/indis.js +439 -0
- package/dist/classes/list.d.ts +55 -0
- package/dist/classes/list.d.ts.map +1 -0
- package/dist/classes/list.js +440 -0
- package/dist/classes/name.d.ts +20 -0
- package/dist/classes/name.d.ts.map +1 -0
- package/dist/classes/name.js +48 -0
- package/dist/classes/note.d.ts +12 -0
- package/dist/classes/note.d.ts.map +1 -0
- package/dist/classes/note.js +46 -0
- package/dist/classes/obje.d.ts +12 -0
- package/dist/classes/obje.d.ts.map +1 -0
- package/dist/classes/obje.js +81 -0
- package/dist/classes/objes.d.ts +8 -0
- package/dist/classes/objes.d.ts.map +1 -0
- package/dist/classes/objes.js +13 -0
- package/dist/classes/repo.d.ts +11 -0
- package/dist/classes/repo.d.ts.map +1 -0
- package/dist/classes/repo.js +6 -0
- package/dist/classes/repos.d.ts +8 -0
- package/dist/classes/repos.d.ts.map +1 -0
- package/dist/classes/repos.js +13 -0
- package/dist/classes/sour.d.ts +11 -0
- package/dist/classes/sour.d.ts.map +1 -0
- package/dist/classes/sour.js +6 -0
- package/dist/classes/sours.d.ts +8 -0
- package/dist/classes/sours.d.ts.map +1 -0
- package/dist/classes/sours.js +13 -0
- package/dist/classes/subm.d.ts +10 -0
- package/dist/classes/subm.d.ts.map +1 -0
- package/dist/classes/subm.js +6 -0
- package/dist/classes/subms.d.ts +8 -0
- package/dist/classes/subms.d.ts.map +1 -0
- package/dist/classes/subms.js +13 -0
- package/dist/constants/constants.d.ts +14 -0
- package/dist/constants/constants.d.ts.map +1 -0
- package/dist/constants/constants.js +13 -0
- package/dist/constants/filters.d.ts +17 -0
- package/dist/constants/filters.d.ts.map +1 -0
- package/dist/constants/filters.js +44 -0
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +4 -0
- package/dist/constants/orders.d.ts +17 -0
- package/dist/constants/orders.d.ts.map +1 -0
- package/dist/constants/orders.js +240 -0
- package/dist/factories/cache-factory.d.ts +30 -0
- package/dist/factories/cache-factory.d.ts.map +1 -0
- package/dist/factories/cache-factory.js +43 -0
- package/dist/factories/date-locale-factory.d.ts +30 -0
- package/dist/factories/date-locale-factory.d.ts.map +1 -0
- package/dist/factories/date-locale-factory.js +34 -0
- package/dist/factories/i18n-factory.d.ts +40 -0
- package/dist/factories/i18n-factory.d.ts.map +1 -0
- package/dist/factories/i18n-factory.js +44 -0
- package/dist/factories/index.d.ts +5 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +5 -0
- package/dist/factories/kinship-factory.d.ts +38 -0
- package/dist/factories/kinship-factory.d.ts.map +1 -0
- package/dist/factories/kinship-factory.js +35 -0
- package/dist/factories/place-parser-provider.d.ts +32 -0
- package/dist/factories/place-parser-provider.d.ts.map +1 -0
- package/dist/factories/place-parser-provider.js +35 -0
- package/dist/factories/place-translator-provider.d.ts +32 -0
- package/dist/factories/place-translator-provider.d.ts.map +1 -0
- package/dist/factories/place-translator-provider.js +35 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/interfaces/common.d.ts +43 -0
- package/dist/interfaces/common.d.ts.map +1 -0
- package/dist/interfaces/common.js +1 -0
- package/dist/interfaces/fam.d.ts +11 -0
- package/dist/interfaces/fam.d.ts.map +1 -0
- package/dist/interfaces/fam.js +1 -0
- package/dist/interfaces/fams.d.ts +9 -0
- package/dist/interfaces/fams.d.ts.map +1 -0
- package/dist/interfaces/fams.js +1 -0
- package/dist/interfaces/gedcom.d.ts +30 -0
- package/dist/interfaces/gedcom.d.ts.map +1 -0
- package/dist/interfaces/gedcom.js +1 -0
- package/dist/interfaces/index.d.ts +12 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +1 -0
- package/dist/interfaces/indi.d.ts +109 -0
- package/dist/interfaces/indi.d.ts.map +1 -0
- package/dist/interfaces/indi.js +1 -0
- package/dist/interfaces/indis.d.ts +31 -0
- package/dist/interfaces/indis.d.ts.map +1 -0
- package/dist/interfaces/indis.js +1 -0
- package/dist/interfaces/list.d.ts +52 -0
- package/dist/interfaces/list.d.ts.map +1 -0
- package/dist/interfaces/list.js +1 -0
- package/dist/interfaces/obje.d.ts +7 -0
- package/dist/interfaces/obje.d.ts.map +1 -0
- package/dist/interfaces/obje.js +1 -0
- package/dist/interfaces/repo.d.ts +7 -0
- package/dist/interfaces/repo.d.ts.map +1 -0
- package/dist/interfaces/repo.js +1 -0
- package/dist/interfaces/sour.d.ts +7 -0
- package/dist/interfaces/sour.d.ts.map +1 -0
- package/dist/interfaces/sour.js +1 -0
- package/dist/interfaces/subm.d.ts +6 -0
- package/dist/interfaces/subm.d.ts.map +1 -0
- package/dist/interfaces/subm.js +1 -0
- package/dist/kinship-translator/index.d.ts +11 -0
- package/dist/kinship-translator/index.d.ts.map +1 -0
- package/dist/kinship-translator/index.js +10 -0
- package/dist/kinship-translator/kinship-translator.basic.d.ts +30 -0
- package/dist/kinship-translator/kinship-translator.basic.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.basic.js +74 -0
- package/dist/kinship-translator/kinship-translator.d.ts +26 -0
- package/dist/kinship-translator/kinship-translator.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.de.d.ts +18 -0
- package/dist/kinship-translator/kinship-translator.de.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.de.js +180 -0
- package/dist/kinship-translator/kinship-translator.en.d.ts +18 -0
- package/dist/kinship-translator/kinship-translator.en.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.en.js +182 -0
- package/dist/kinship-translator/kinship-translator.es.d.ts +18 -0
- package/dist/kinship-translator/kinship-translator.es.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.es.js +181 -0
- package/dist/kinship-translator/kinship-translator.fr.d.ts +18 -0
- package/dist/kinship-translator/kinship-translator.fr.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.fr.js +181 -0
- package/dist/kinship-translator/kinship-translator.hu.d.ts +19 -0
- package/dist/kinship-translator/kinship-translator.hu.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.hu.js +226 -0
- package/dist/kinship-translator/kinship-translator.interface.d.ts +19 -0
- package/dist/kinship-translator/kinship-translator.interface.d.ts.map +1 -0
- package/dist/kinship-translator/kinship-translator.interface.js +1 -0
- package/dist/kinship-translator/kinship-translator.js +103 -0
- package/dist/kinship-translator/patterns.de.d.ts +2 -0
- package/dist/kinship-translator/patterns.de.d.ts.map +1 -0
- package/dist/kinship-translator/patterns.de.js +14 -0
- package/dist/kinship-translator/patterns.en.d.ts +2 -0
- package/dist/kinship-translator/patterns.en.d.ts.map +1 -0
- package/dist/kinship-translator/patterns.en.js +14 -0
- package/dist/kinship-translator/patterns.es.d.ts +2 -0
- package/dist/kinship-translator/patterns.es.d.ts.map +1 -0
- package/dist/kinship-translator/patterns.es.js +14 -0
- package/dist/kinship-translator/patterns.fr.d.ts +2 -0
- package/dist/kinship-translator/patterns.fr.d.ts.map +1 -0
- package/dist/kinship-translator/patterns.fr.js +14 -0
- package/dist/kinship-translator/patterns.hu.d.ts +6 -0
- package/dist/kinship-translator/patterns.hu.d.ts.map +1 -0
- package/dist/kinship-translator/patterns.hu.js +97 -0
- package/dist/kinship-translator/translators.d.ts +6 -0
- package/dist/kinship-translator/translators.d.ts.map +1 -0
- package/dist/kinship-translator/translators.js +5 -0
- package/dist/kinship-translator/types.d.ts +9 -0
- package/dist/kinship-translator/types.d.ts.map +1 -0
- package/dist/kinship-translator/types.js +1 -0
- package/dist/structures/address.d.ts +14 -0
- package/dist/structures/address.d.ts.map +1 -0
- package/dist/structures/address.js +1 -0
- package/dist/structures/association.d.ts +13 -0
- package/dist/structures/association.d.ts.map +1 -0
- package/dist/structures/association.js +1 -0
- package/dist/structures/change-date.d.ts +8 -0
- package/dist/structures/change-date.d.ts.map +1 -0
- package/dist/structures/change-date.js +1 -0
- package/dist/structures/creation-date.d.ts +7 -0
- package/dist/structures/creation-date.d.ts.map +1 -0
- package/dist/structures/creation-date.js +1 -0
- package/dist/structures/date.d.ts +9 -0
- package/dist/structures/date.d.ts.map +1 -0
- package/dist/structures/date.js +1 -0
- package/dist/structures/event-detail-structure.d.ts +25 -0
- package/dist/structures/event-detail-structure.d.ts.map +1 -0
- package/dist/structures/event-detail-structure.js +1 -0
- package/dist/structures/family.d.ts +34 -0
- package/dist/structures/family.d.ts.map +1 -0
- package/dist/structures/family.js +1 -0
- package/dist/structures/gedcom.d.ts +60 -0
- package/dist/structures/gedcom.d.ts.map +1 -0
- package/dist/structures/gedcom.js +1 -0
- package/dist/structures/index.d.ts +25 -0
- package/dist/structures/index.d.ts.map +1 -0
- package/dist/structures/index.js +1 -0
- package/dist/structures/individual-event-detail-structure.d.ts +9 -0
- package/dist/structures/individual-event-detail-structure.d.ts.map +1 -0
- package/dist/structures/individual-event-detail-structure.js +1 -0
- package/dist/structures/individual-event-structure.d.ts +83 -0
- package/dist/structures/individual-event-structure.d.ts.map +1 -0
- package/dist/structures/individual-event-structure.js +1 -0
- package/dist/structures/individual.d.ts +40 -0
- package/dist/structures/individual.d.ts.map +1 -0
- package/dist/structures/individual.js +1 -0
- package/dist/structures/lds-ordinance-detail.d.ts +17 -0
- package/dist/structures/lds-ordinance-detail.d.ts.map +1 -0
- package/dist/structures/lds-ordinance-detail.js +1 -0
- package/dist/structures/lds-spouse-sealing.d.ts +7 -0
- package/dist/structures/lds-spouse-sealing.d.ts.map +1 -0
- package/dist/structures/lds-spouse-sealing.js +1 -0
- package/dist/structures/marriage-date.d.ts +11 -0
- package/dist/structures/marriage-date.d.ts.map +1 -0
- package/dist/structures/marriage-date.js +1 -0
- package/dist/structures/multimedia-link.d.ts +16 -0
- package/dist/structures/multimedia-link.d.ts.map +1 -0
- package/dist/structures/multimedia-link.js +1 -0
- package/dist/structures/non-event.d.ts +12 -0
- package/dist/structures/non-event.d.ts.map +1 -0
- package/dist/structures/non-event.js +1 -0
- package/dist/structures/note.d.ts +16 -0
- package/dist/structures/note.d.ts.map +1 -0
- package/dist/structures/note.js +1 -0
- package/dist/structures/personal-name-pieces.d.ts +11 -0
- package/dist/structures/personal-name-pieces.d.ts.map +1 -0
- package/dist/structures/personal-name-pieces.js +1 -0
- package/dist/structures/personal-name.d.ts +16 -0
- package/dist/structures/personal-name.d.ts.map +1 -0
- package/dist/structures/personal-name.js +1 -0
- package/dist/structures/place.d.ts +20 -0
- package/dist/structures/place.d.ts.map +1 -0
- package/dist/structures/place.js +1 -0
- package/dist/structures/repository.d.ts +6 -0
- package/dist/structures/repository.d.ts.map +1 -0
- package/dist/structures/repository.js +1 -0
- package/dist/structures/source-citation.d.ts +27 -0
- package/dist/structures/source-citation.d.ts.map +1 -0
- package/dist/structures/source-citation.js +1 -0
- package/dist/structures/source-repository-citation.d.ts +13 -0
- package/dist/structures/source-repository-citation.d.ts.map +1 -0
- package/dist/structures/source-repository-citation.js +1 -0
- package/dist/structures/source.d.ts +28 -0
- package/dist/structures/source.d.ts.map +1 -0
- package/dist/structures/source.js +1 -0
- package/dist/types/ancestry-media.d.ts +65 -0
- package/dist/types/ancestry-media.d.ts.map +1 -0
- package/dist/types/ancestry-media.js +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/settings.d.ts +12 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/settings.js +1 -0
- package/dist/types/types.d.ts +220 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +26 -0
- package/dist/utils/cache.d.ts +22 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +57 -0
- package/dist/utils/common-creator.d.ts +13 -0
- package/dist/utils/common-creator.d.ts.map +1 -0
- package/dist/utils/common-creator.js +72 -0
- package/dist/utils/date-formatter.d.ts +35 -0
- package/dist/utils/date-formatter.d.ts.map +1 -0
- package/dist/utils/date-formatter.js +207 -0
- package/dist/utils/get-all-prop.d.ts +4 -0
- package/dist/utils/get-all-prop.d.ts.map +1 -0
- package/dist/utils/get-all-prop.js +5 -0
- package/dist/utils/get-family-with.d.ts +5 -0
- package/dist/utils/get-family-with.d.ts.map +1 -0
- package/dist/utils/get-family-with.js +11 -0
- package/dist/utils/get-places.d.ts +21 -0
- package/dist/utils/get-places.d.ts.map +1 -0
- package/dist/utils/get-places.js +77 -0
- package/dist/utils/get-product-details.d.ts +4 -0
- package/dist/utils/get-product-details.d.ts.map +1 -0
- package/dist/utils/get-product-details.js +6 -0
- package/dist/utils/get-raw-size.d.ts +2 -0
- package/dist/utils/get-raw-size.d.ts.map +1 -0
- package/dist/utils/get-raw-size.js +3 -0
- package/dist/utils/index.d.ts +17 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +11 -0
- package/dist/utils/name-formatter.d.ts +10 -0
- package/dist/utils/name-formatter.d.ts.map +1 -0
- package/dist/utils/name-formatter.js +45 -0
- package/dist/utils/nested-group.d.ts +4 -0
- package/dist/utils/nested-group.d.ts.map +1 -0
- package/dist/utils/nested-group.js +34 -0
- package/dist/utils/ordinalize.d.ts +3 -0
- package/dist/utils/ordinalize.d.ts.map +1 -0
- package/dist/utils/ordinalize.js +104 -0
- package/dist/utils/parser.d.ts +17 -0
- package/dist/utils/parser.d.ts.map +1 -0
- package/dist/utils/parser.js +322 -0
- package/dist/utils/place-parser.d.ts +16 -0
- package/dist/utils/place-parser.d.ts.map +1 -0
- package/dist/utils/place-parser.js +46 -0
- package/dist/utils/place-translator.d.ts +6 -0
- package/dist/utils/place-translator.d.ts.map +1 -0
- package/dist/utils/place-translator.js +8 -0
- package/dist/utils/place-types.d.ts +27 -0
- package/dist/utils/place-types.d.ts.map +1 -0
- package/dist/utils/place-types.js +14 -0
- package/dist/utils/range.d.ts +19 -0
- package/dist/utils/range.d.ts.map +1 -0
- package/dist/utils/range.js +265 -0
- package/package.json +153 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { format, isValid, parse } from "date-fns";
|
|
2
|
+
import { ACCEPTED_DATE_FORMATS } from "../utils/date-formatter";
|
|
3
|
+
import { inRange } from "../utils/range";
|
|
4
|
+
import { Common, createCommon, createProxy } from "./common";
|
|
5
|
+
import { getDateLocale } from "../factories";
|
|
6
|
+
const LONG_NOTES = {
|
|
7
|
+
"Abt.": "About",
|
|
8
|
+
"Bef.": "Before",
|
|
9
|
+
"Aft.": "After",
|
|
10
|
+
};
|
|
11
|
+
const NOTE_MARKER = "####";
|
|
12
|
+
/**
|
|
13
|
+
* Format a date based on available components (DAY, MONTH, YEAR, NOTE)
|
|
14
|
+
*/
|
|
15
|
+
const formatDateWithComponents = (date, hasDay, hasMonth, hasYear, noteValue, baseFormat = "dd MMM yyyy") => {
|
|
16
|
+
const hasNote = baseFormat.includes("NOTE");
|
|
17
|
+
let validDateFormat = baseFormat.replace("NOTE", NOTE_MARKER);
|
|
18
|
+
if (!hasDay) {
|
|
19
|
+
validDateFormat = validDateFormat.replace(/d+/g, "");
|
|
20
|
+
}
|
|
21
|
+
if (!hasMonth) {
|
|
22
|
+
validDateFormat = validDateFormat.replace(/[.\-\s/]*M+/g, "");
|
|
23
|
+
}
|
|
24
|
+
if (!hasYear) {
|
|
25
|
+
validDateFormat = validDateFormat.replace(/y+[.\-\s/]*/g, "");
|
|
26
|
+
}
|
|
27
|
+
validDateFormat = validDateFormat
|
|
28
|
+
.replace(/([.\-\s/])\1+/g, "$1")
|
|
29
|
+
.replace(/^[.\-\s/]+|[.\-\s/]+$/g, "");
|
|
30
|
+
const formattedDate = format(date, validDateFormat, {
|
|
31
|
+
locale: getDateLocale(),
|
|
32
|
+
});
|
|
33
|
+
// Add NOTE prefix if it exists
|
|
34
|
+
return noteValue && hasNote
|
|
35
|
+
? formattedDate.replace(NOTE_MARKER, noteValue).trim()
|
|
36
|
+
: formattedDate.replace(NOTE_MARKER, "").trim();
|
|
37
|
+
};
|
|
38
|
+
export class CommonDate extends Common {
|
|
39
|
+
constructor(gedcom, id, main, parent) {
|
|
40
|
+
super(gedcom, id, main, parent);
|
|
41
|
+
delete this.id;
|
|
42
|
+
}
|
|
43
|
+
set value(value) {
|
|
44
|
+
if (value) {
|
|
45
|
+
const noteRegExp = /^(?<note>[a-zA-Z]+\.)/;
|
|
46
|
+
const noteMatch = value.match(noteRegExp)?.groups;
|
|
47
|
+
let validValue = value;
|
|
48
|
+
if (noteMatch?.note) {
|
|
49
|
+
this.NOTE =
|
|
50
|
+
this.NOTE ||
|
|
51
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
52
|
+
this.NOTE.value = noteMatch?.note;
|
|
53
|
+
validValue = value.replace(noteRegExp, "");
|
|
54
|
+
}
|
|
55
|
+
const acceptedDate = this.isValidDateFormat(validValue);
|
|
56
|
+
if (acceptedDate) {
|
|
57
|
+
this.DAY =
|
|
58
|
+
this.DAY ||
|
|
59
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
60
|
+
this.DAY.value = format(acceptedDate, "dd");
|
|
61
|
+
this.MONTH =
|
|
62
|
+
this.MONTH ||
|
|
63
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
64
|
+
this.MONTH.value = format(acceptedDate, "MMM");
|
|
65
|
+
this.YEAR =
|
|
66
|
+
this.YEAR ||
|
|
67
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
68
|
+
this.YEAR.value = format(acceptedDate, "yyyy");
|
|
69
|
+
this._date = acceptedDate;
|
|
70
|
+
this._value = value;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
let fixedValue = validValue;
|
|
74
|
+
if (/\d{4} [A-Za-z]+\s*$/.test(validValue)) {
|
|
75
|
+
fixedValue = `${validValue} 1`;
|
|
76
|
+
}
|
|
77
|
+
else if (/^\s*[A-Za-z]+ \d{4}/.test(validValue)) {
|
|
78
|
+
fixedValue = `1 ${validValue}`;
|
|
79
|
+
}
|
|
80
|
+
this._date = new Date(fixedValue);
|
|
81
|
+
this._value = value;
|
|
82
|
+
if (this._date && isValid(this._date)) {
|
|
83
|
+
const yearMonthDay = /[\dA-Za-z]+ [\dA-Za-z]+ [\dA-Za-z]+/.test(validValue);
|
|
84
|
+
const yearMonth = /[\dA-Za-z]+ [\dA-Za-z]+/.test(validValue);
|
|
85
|
+
const year = /[\dA-Za-z]+/.test(validValue);
|
|
86
|
+
if (yearMonthDay) {
|
|
87
|
+
this.DAY =
|
|
88
|
+
this.DAY ||
|
|
89
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
90
|
+
this.DAY.value = format(this._date, "dd");
|
|
91
|
+
}
|
|
92
|
+
if (yearMonth || yearMonthDay) {
|
|
93
|
+
this.MONTH =
|
|
94
|
+
this.MONTH ||
|
|
95
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
96
|
+
this.MONTH.value = format(this._date, "MMM");
|
|
97
|
+
}
|
|
98
|
+
if (year || yearMonth || yearMonthDay) {
|
|
99
|
+
this.YEAR =
|
|
100
|
+
this.YEAR ||
|
|
101
|
+
createCommon(this._gedcom, undefined, this.main);
|
|
102
|
+
this.YEAR.value = format(this._date, "yyyy");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
get value() {
|
|
109
|
+
const hasDay = !!this.DAY?.value;
|
|
110
|
+
const hasMonth = !!this.MONTH?.value;
|
|
111
|
+
const hasYear = !!this.YEAR?.value;
|
|
112
|
+
if (!this._date ||
|
|
113
|
+
!isValid(this._date) ||
|
|
114
|
+
(!hasDay && !hasMonth && !hasYear)) {
|
|
115
|
+
return this._value;
|
|
116
|
+
}
|
|
117
|
+
return formatDateWithComponents(this._date, hasDay, hasMonth, hasYear, this.NOTE?.value);
|
|
118
|
+
}
|
|
119
|
+
get rawValue() {
|
|
120
|
+
return this._date;
|
|
121
|
+
}
|
|
122
|
+
assign(name, value, unique = false) {
|
|
123
|
+
if (!["DAY", "MONTH", "YEAR"].includes(name)) {
|
|
124
|
+
return super.assign(name, value, unique);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.set(name, value);
|
|
128
|
+
}
|
|
129
|
+
return this.get(name);
|
|
130
|
+
}
|
|
131
|
+
isValidDateFormat(value) {
|
|
132
|
+
let validDate;
|
|
133
|
+
ACCEPTED_DATE_FORMATS.find((acceptedFormat) => {
|
|
134
|
+
const date = parse(value, acceptedFormat, new Date());
|
|
135
|
+
if (isValid(date)) {
|
|
136
|
+
validDate = date;
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
});
|
|
141
|
+
return validDate;
|
|
142
|
+
}
|
|
143
|
+
toNote(short = true) {
|
|
144
|
+
const note = this.NOTE?.value?.trim();
|
|
145
|
+
if (!short) {
|
|
146
|
+
return LONG_NOTES[note];
|
|
147
|
+
}
|
|
148
|
+
return note;
|
|
149
|
+
}
|
|
150
|
+
toValue(dateFormat = "dd MMM yyyy") {
|
|
151
|
+
const hasDay = !!this.DAY?.value;
|
|
152
|
+
const hasMonth = !!this.MONTH?.value;
|
|
153
|
+
const hasYear = !!this.YEAR?.value;
|
|
154
|
+
if (!this._date ||
|
|
155
|
+
!isValid(this._date) ||
|
|
156
|
+
(!hasDay && !hasMonth && !hasYear)) {
|
|
157
|
+
return this._value;
|
|
158
|
+
}
|
|
159
|
+
return formatDateWithComponents(this._date, hasDay, hasMonth, hasYear, this.NOTE?.value, dateFormat);
|
|
160
|
+
}
|
|
161
|
+
exportValue() {
|
|
162
|
+
return this.toValue("NOTE dd MMM yyyy");
|
|
163
|
+
}
|
|
164
|
+
inRange(range, trueIfNoYear = false) {
|
|
165
|
+
return inRange(this.YEAR?.value, range, trueIfNoYear);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
export const createCommonDate = (gedcom, id, main, parent) => {
|
|
169
|
+
return createProxy(new CommonDate(gedcom, id, main, parent));
|
|
170
|
+
};
|
|
171
|
+
export const isCommonDate = (value) => {
|
|
172
|
+
return (!!value &&
|
|
173
|
+
value !== null &&
|
|
174
|
+
typeof value === "object" &&
|
|
175
|
+
"_date" in value);
|
|
176
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type IFamilyStructure from "../structures/family";
|
|
2
|
+
import { type FamKey } from "../types/types";
|
|
3
|
+
import type IFam from "../interfaces/fam";
|
|
4
|
+
import { Common } from "./common";
|
|
5
|
+
import type { ProxyOriginal } from "./common";
|
|
6
|
+
import { Families } from "./fams";
|
|
7
|
+
import { type GedComType } from "./gedcom";
|
|
8
|
+
import { Individuals } from "./indis";
|
|
9
|
+
export declare class Fam extends Common<string, FamKey> implements IFam {
|
|
10
|
+
private getFamilyMembers;
|
|
11
|
+
getChildren(): Individuals;
|
|
12
|
+
getHusband(): Individuals;
|
|
13
|
+
getWife(): Individuals;
|
|
14
|
+
getParents(): Individuals;
|
|
15
|
+
toList(): Families;
|
|
16
|
+
}
|
|
17
|
+
export type FamType = Fam & IFamilyStructure;
|
|
18
|
+
export declare const createFam: (gedcom: GedComType, id: FamKey, main?: Common, parent?: Common) => ProxyOriginal<FamType>;
|
|
19
|
+
//# sourceMappingURL=fam.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fam.d.ts","sourceRoot":"","sources":["../../src/classes/fam.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAe,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,GAAI,SAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAE,YAAW,IAAI;IAC9D,OAAO,CAAC,gBAAgB;IAexB,WAAW;IAIX,UAAU;IAIV,OAAO;IAIP,UAAU,IAAI,WAAW;IAIzB,MAAM;CAMN;AAED,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,gBAAgB,CAAC;AAC7C,eAAO,MAAM,SAAS,GACrB,QAAQ,UAAU,EAClB,IAAI,MAAM,EACV,OAAO,MAAM,EACb,SAAS,MAAM,KACb,aAAa,CAAC,OAAO,CAIvB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Common, createProxy } from "./common";
|
|
2
|
+
import { Families } from "./fams";
|
|
3
|
+
import { Individuals } from "./indis";
|
|
4
|
+
export class Fam extends Common {
|
|
5
|
+
getFamilyMembers(type) {
|
|
6
|
+
const familyMembers = new Individuals();
|
|
7
|
+
this.get(type)
|
|
8
|
+
?.toList()
|
|
9
|
+
.forEach((item) => {
|
|
10
|
+
const indiId = item.value;
|
|
11
|
+
const indi = this._gedcom?.indi(indiId);
|
|
12
|
+
if (indi) {
|
|
13
|
+
familyMembers.item(indiId, indi);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
return familyMembers;
|
|
17
|
+
}
|
|
18
|
+
getChildren() {
|
|
19
|
+
return this.getFamilyMembers("CHIL");
|
|
20
|
+
}
|
|
21
|
+
getHusband() {
|
|
22
|
+
return this.getFamilyMembers("HUSB");
|
|
23
|
+
}
|
|
24
|
+
getWife() {
|
|
25
|
+
return this.getFamilyMembers("WIFE");
|
|
26
|
+
}
|
|
27
|
+
getParents() {
|
|
28
|
+
return this.getHusband().copy().merge(this.getWife());
|
|
29
|
+
}
|
|
30
|
+
toList() {
|
|
31
|
+
return new Families().concat(
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
this.id ? { [this.id]: this } : { ...[this] });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export const createFam = (gedcom, id, main, parent) => {
|
|
37
|
+
return createProxy(new Fam(gedcom, id, main, parent));
|
|
38
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type FamKey, type Filter, type Order, type FilterIterator, type OrderIterator } from "../types/types";
|
|
2
|
+
import { type IFamilies } from "../interfaces/fams";
|
|
3
|
+
import { type FamType } from "./fam";
|
|
4
|
+
import { Individuals } from "./indis";
|
|
5
|
+
import { List } from "./list";
|
|
6
|
+
export declare class Families extends List<FamKey, FamType> implements IFamilies {
|
|
7
|
+
copy(): Families;
|
|
8
|
+
except(item: FamType): Families;
|
|
9
|
+
filter(filters: Filter | FilterIterator<FamType, FamKey>): Families;
|
|
10
|
+
find(filters: Filter | FilterIterator<FamType, FamKey>): FamType | undefined;
|
|
11
|
+
orderBy(orders: Order | OrderIterator<FamType, FamKey>): Families;
|
|
12
|
+
getParents(): Individuals;
|
|
13
|
+
getChildren(): Individuals;
|
|
14
|
+
toList(): Families;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=fams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fams.d.ts","sourceRoot":"","sources":["../../src/classes/fams.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,KAAK,OAAO,EAAO,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,QAAS,SAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,CAAE,YAAW,SAAS;IACvE,IAAI,IAAI,QAAQ;IAIhB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ;IAI/B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ;IAInE,IAAI,CACH,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAC/C,OAAO,GAAG,SAAS;IAItB,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ;IAIjE,UAAU,IAAI,WAAW;IAYzB,WAAW,IAAI,WAAW;IAY1B,MAAM;CAGN"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Fam } from "./fam";
|
|
2
|
+
import { Individuals } from "./indis";
|
|
3
|
+
import { List } from "./list";
|
|
4
|
+
export class Families extends List {
|
|
5
|
+
copy() {
|
|
6
|
+
return super.copy(Families);
|
|
7
|
+
}
|
|
8
|
+
except(item) {
|
|
9
|
+
return super.except(item, Families);
|
|
10
|
+
}
|
|
11
|
+
filter(filters) {
|
|
12
|
+
return super.filter(filters, Families);
|
|
13
|
+
}
|
|
14
|
+
find(filters) {
|
|
15
|
+
return super.find(filters, Families);
|
|
16
|
+
}
|
|
17
|
+
orderBy(orders) {
|
|
18
|
+
return super.orderBy(orders, Families);
|
|
19
|
+
}
|
|
20
|
+
getParents() {
|
|
21
|
+
const persons = new Individuals();
|
|
22
|
+
this.values().forEach((fam) => {
|
|
23
|
+
if (fam && fam instanceof Fam) {
|
|
24
|
+
persons.merge(fam.getParents());
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return persons;
|
|
28
|
+
}
|
|
29
|
+
getChildren() {
|
|
30
|
+
const persons = new Individuals();
|
|
31
|
+
this.values().forEach((fam) => {
|
|
32
|
+
if (fam && fam instanceof Fam) {
|
|
33
|
+
persons.merge(fam.getChildren());
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return persons;
|
|
37
|
+
}
|
|
38
|
+
toList() {
|
|
39
|
+
return new Families().concat(this.getItems());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type ConvertOptions } from "../interfaces/common";
|
|
2
|
+
import type IGedcom from "../interfaces/gedcom";
|
|
3
|
+
import type IGedComStructure from "../structures/gedcom";
|
|
4
|
+
import { type IdType, type IndiKey, type FamKey, type ObjeKey, type SourKey, type RepoKey, type SubmKey, type MultiTag } from "../types/types";
|
|
5
|
+
import { Common } from "./common";
|
|
6
|
+
import { type FamType } from "./fam";
|
|
7
|
+
import { type Families } from "./fams";
|
|
8
|
+
import { type IndiType } from "./indi";
|
|
9
|
+
import { type Individuals } from "./indis";
|
|
10
|
+
import { List } from "./list";
|
|
11
|
+
import { type ObjeType } from "./obje";
|
|
12
|
+
import { type Objects } from "./objes";
|
|
13
|
+
import { type RepoType } from "./repo";
|
|
14
|
+
import { type Repositories } from "./repos";
|
|
15
|
+
import { type SourType } from "./sour";
|
|
16
|
+
import { type Sources } from "./sours";
|
|
17
|
+
import { type SubmType } from "./subm";
|
|
18
|
+
import { type Submitters } from "./subms";
|
|
19
|
+
export declare class GedCom extends Common implements IGedcom {
|
|
20
|
+
tagMembers: Record<string, {
|
|
21
|
+
tag: Common;
|
|
22
|
+
indis: Individuals;
|
|
23
|
+
}>;
|
|
24
|
+
reflist: Record<string, Common>;
|
|
25
|
+
refcount: number;
|
|
26
|
+
constructor();
|
|
27
|
+
private getMain;
|
|
28
|
+
getList<T extends List = List>(type: MultiTag): T | undefined;
|
|
29
|
+
indis(): Individuals;
|
|
30
|
+
cloneIndis(target?: IndiKey | IndiType, source?: IndiKey | IndiType, avoidKeys?: MultiTag[], removeFromOriginalList?: boolean): this;
|
|
31
|
+
mergeIndis(target?: IndiKey | IndiType, source?: IndiKey | IndiType, removeFromOriginalList?: boolean): this;
|
|
32
|
+
fams(): Families;
|
|
33
|
+
objes(): Objects;
|
|
34
|
+
sours(): Sources;
|
|
35
|
+
repos(): Repositories;
|
|
36
|
+
subms(): Submitters;
|
|
37
|
+
tags(): List<IdType, Common<string, IdType>>;
|
|
38
|
+
customTags(): List<IdType, Common<string, IdType>>;
|
|
39
|
+
indi(index: number | IndiKey): IndiType;
|
|
40
|
+
fam(index: number | FamKey): FamType;
|
|
41
|
+
obje(index: number | ObjeKey): ObjeType;
|
|
42
|
+
sour(index: number | SourKey): SourType;
|
|
43
|
+
repo(index: number | RepoKey): RepoType;
|
|
44
|
+
subm(index: number | SubmKey): SubmType;
|
|
45
|
+
tag(index: number | SubmKey): Common<string, IdType>;
|
|
46
|
+
fromList(id?: string): Common<string, IdType>;
|
|
47
|
+
tagByName(name?: string): Common<string, IdType>;
|
|
48
|
+
customTag(index: number | SubmKey): Common<string, IdType>;
|
|
49
|
+
private getIndiRelatedLists;
|
|
50
|
+
private getDownloadHeader;
|
|
51
|
+
toFiltered(indis: IndiKey[]): this | GedComType;
|
|
52
|
+
toJson(tag?: MultiTag | undefined, options?: (ConvertOptions & {
|
|
53
|
+
indis?: IndiKey[];
|
|
54
|
+
}) | undefined): string;
|
|
55
|
+
toGedcom(tag?: MultiTag | undefined, level?: number, options?: (ConvertOptions & {
|
|
56
|
+
indis?: IndiKey[];
|
|
57
|
+
}) | undefined): string;
|
|
58
|
+
hasTag(tag?: string | Common): boolean;
|
|
59
|
+
hasUnknownAncestor(): boolean;
|
|
60
|
+
hasIgnoredMember(): boolean;
|
|
61
|
+
hasUnattachedMember(): boolean;
|
|
62
|
+
hasUnknownGivenname(): boolean;
|
|
63
|
+
hasUnknownSurname(): boolean;
|
|
64
|
+
hasNonRelevant(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Get all places from the GEDCOM with occurrence counts
|
|
67
|
+
* @returns Record mapping place names to their occurrence count
|
|
68
|
+
*/
|
|
69
|
+
getAllPlaces(): Record<string, number>;
|
|
70
|
+
/**
|
|
71
|
+
* Get all places from the GEDCOM with associated individual IDs
|
|
72
|
+
* @param usedIndis Optional array of individual IDs to filter by
|
|
73
|
+
* @returns Record mapping place names to arrays of individual IDs
|
|
74
|
+
*/
|
|
75
|
+
getAllPlacesWithIndis(usedIndis?: IndiKey[]): Record<string, (`@I${number}@` | `@P${number}@` | `@XI${number}@` | `@XXI${number}@`)[]>;
|
|
76
|
+
}
|
|
77
|
+
export type GedComType = GedCom & IGedComStructure;
|
|
78
|
+
export declare const createGedCom: () => GedComType;
|
|
79
|
+
export declare const isGedcomString: (gedcomString?: string) => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Validates if a string is a valid GEDCOM file content
|
|
82
|
+
* @param content - The file content to validate
|
|
83
|
+
* @returns An object with `valid` boolean and optional `error` message
|
|
84
|
+
*/
|
|
85
|
+
export declare const validateGedcomContent: (content?: string) => {
|
|
86
|
+
valid: boolean;
|
|
87
|
+
error?: string;
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=gedcom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gedcom.d.ts","sourceRoot":"","sources":["../../src/classes/gedcom.ts"],"names":[],"mappings":"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"}
|