@treeviz/gedcom-parser 2.1.18 → 2.1.22

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.
@@ -300,11 +300,28 @@ var hungarianOrdinalize = (n) => {
300
300
  // src/kinship-translator/patterns.hu.ts
301
301
  var parentRelationsHu = {
302
302
  step: "mostoha",
303
- foster: "nevelt",
303
+ foster: { ancestor: "nevel\u0151", other: "nevelt" },
304
304
  birth: "v\xE9rszerinti",
305
305
  biological: "v\xE9rszerinti",
306
- adopted: "\xF6r\xF6kbefogadott"
306
+ adopted: { ancestor: "\xF6r\xF6kbefogad\xF3", other: "\xF6r\xF6kbefogadott" }
307
307
  };
308
+ var parentRelationPrefix = (relation, ancestor) => {
309
+ const label = parentRelationsHu[relation];
310
+ if (!label) {
311
+ return;
312
+ }
313
+ if (typeof label === "string") {
314
+ return label;
315
+ }
316
+ return ancestor ? label.ancestor : label.other;
317
+ };
318
+ var parentRelationModifiers = [
319
+ ...new Set(
320
+ Object.values(parentRelationsHu).flatMap(
321
+ (label) => typeof label === "string" ? [label] : [label.ancestor, label.other]
322
+ )
323
+ )
324
+ ].join("|");
308
325
  var nominativus = {
309
326
  apa: { nominativus: "apa", dativus: "apj\xE1nak", possessivus: "apja" },
310
327
  anya: { nominativus: "anya", dativus: "anyj\xE1nak", possessivus: "anyja" },
@@ -382,15 +399,9 @@ var casesHu = {
382
399
  var InLawsHu = {
383
400
  "gyermek feles\xE9ge": "meny",
384
401
  "gyermek f\xE9rje": "v\u0151",
385
- [`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
386
- "|"
387
- )}) )?anyja`]: "any\xF3s",
388
- [`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
389
- "|"
390
- )}) )?apja`]: "ap\xF3s",
391
- [`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
392
- "|"
393
- )}) )?(f\xE9l)?testv\xE9re`]: (indi) => {
402
+ [`(f\xE9rj|feles\xE9g) (?<mod1>(${parentRelationModifiers}) )?anyja`]: "any\xF3s",
403
+ [`(f\xE9rj|feles\xE9g) (?<mod1>(${parentRelationModifiers}) )?apja`]: "ap\xF3s",
404
+ [`(f\xE9rj|feles\xE9g) (?<mod1>(${parentRelationModifiers}) )?(f\xE9l)?testv\xE9re`]: (indi) => {
394
405
  if (indi?.isMale()) {
395
406
  return "s\xF3gor";
396
407
  }
@@ -667,7 +678,12 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
667
678
  if (!relation || !this.pathN?.relation) {
668
679
  return relation ?? "";
669
680
  }
670
- return `${parentRelationsHu[this.pathN.relation]} ${relation}`;
681
+ const isAncestor = (this.pathN.level ?? 0) > 0 && (this.pathN.degree ?? 0) === 0;
682
+ const prefix = parentRelationPrefix(this.pathN.relation, isAncestor);
683
+ if (!prefix) {
684
+ return relation;
685
+ }
686
+ return `${prefix} ${relation}`;
671
687
  }
672
688
  };
673
689
 
@@ -867,6 +883,10 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
867
883
  if (!relation || !this.pathN?.relation) {
868
884
  return relation ?? "";
869
885
  }
886
+ if (this.pathN.relation === "adopted") {
887
+ const isAncestor = (this.pathN.level ?? 0) > 0 && (this.pathN.degree ?? 0) === 0;
888
+ return `${isAncestor ? "adoptive" : "adopted"} ${relation}`;
889
+ }
870
890
  return `${this.pathN.relation} ${relation}`;
871
891
  }
872
892
  };
@@ -1802,6 +1822,39 @@ var lineal = (level, sex, kind) => {
1802
1822
  }
1803
1823
  return `${L - 1}\u4E16\u306E\u5B6B`;
1804
1824
  };
1825
+ var adoptedRelation = (relation) => {
1826
+ if (relation === "\u7236") {
1827
+ return "\u990A\u7236";
1828
+ }
1829
+ if (relation === "\u6BCD") {
1830
+ return "\u990A\u6BCD";
1831
+ }
1832
+ if (relation === "\u89AA") {
1833
+ return "\u990A\u89AA";
1834
+ }
1835
+ if (relation === "\u606F\u5B50" || relation === "\u5B50") {
1836
+ return "\u990A\u5B50";
1837
+ }
1838
+ if (relation === "\u5A18") {
1839
+ return "\u990A\u5973";
1840
+ }
1841
+ return `\u990A${relation}`;
1842
+ };
1843
+ var fosterRelation = (relation) => {
1844
+ if (relation === "\u7236") {
1845
+ return "\u91CC\u7236";
1846
+ }
1847
+ if (relation === "\u6BCD") {
1848
+ return "\u91CC\u6BCD";
1849
+ }
1850
+ if (relation === "\u89AA") {
1851
+ return "\u91CC\u89AA";
1852
+ }
1853
+ if (relation === "\u606F\u5B50" || relation === "\u5A18" || relation === "\u5B50") {
1854
+ return "\u91CC\u5B50";
1855
+ }
1856
+ return `\u91CC${relation}`;
1857
+ };
1805
1858
  var cousinPlain = (degree) => {
1806
1859
  if (degree <= 1) {
1807
1860
  return "\u3044\u3068\u3053";
@@ -1961,10 +2014,10 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
1961
2014
  return `\u7D99${relation}`;
1962
2015
  }
1963
2016
  if (this.pathN.relation === "adopted") {
1964
- return `\u990A\u5B50\u306E${relation}`;
2017
+ return adoptedRelation(relation);
1965
2018
  }
1966
2019
  if (this.pathN.relation === "foster") {
1967
- return `\u91CC\u89AA\u306E${relation}`;
2020
+ return fosterRelation(relation);
1968
2021
  }
1969
2022
  return relation;
1970
2023
  }
@@ -2877,7 +2930,7 @@ var Common = class _Common {
2877
2930
  return this.sourStartsWith("ahnenblatt");
2878
2931
  }
2879
2932
  isGeni() {
2880
- return this.sourStartsWith("geni");
2933
+ return this.sourStartsWith("geni.com");
2881
2934
  }
2882
2935
  isAncestry() {
2883
2936
  return this.sourStartsWith("ancestry");
@@ -5889,10 +5942,12 @@ var relativesOnLevelCache = relativesCache("relativesOnLevelCache");
5889
5942
  var relativesOnDegreeCache = relativesCache("relativesOnDegreeCache");
5890
5943
  var Indi = class extends Common {
5891
5944
  toName() {
5892
- return this.get("NAME")?.toValue();
5945
+ const name = this.get("NAME");
5946
+ const value = name?.index(0)?.toValue() ?? name?.toValue();
5947
+ return typeof value === "string" ? value : void 0;
5893
5948
  }
5894
5949
  toNaturalName() {
5895
- return this.get("NAME")?.toValue()?.replaceAll("/", "");
5950
+ return this.toName()?.replaceAll("/", "");
5896
5951
  }
5897
5952
  toList() {
5898
5953
  return new Individuals().concat(
@@ -6437,17 +6492,25 @@ var Indi = class extends Common {
6437
6492
  }
6438
6493
  return list;
6439
6494
  }
6440
- myheritageLink(poolId = 0) {
6495
+ myheritageLink(poolId = 0, treeToken) {
6441
6496
  let www = (this.getFromSourceHeads("SOUR.CORP.value") || this._gedcom?.HEAD?.SOUR?.CORP?.value)?.toLowerCase().replace(/^www\./gi, "");
6442
6497
  if (!www || /treeviz/i.test(www)) {
6443
6498
  www = "myheritage.com";
6444
6499
  }
6500
+ if (!this.id) {
6501
+ return;
6502
+ }
6503
+ const id = Number(this.id.replace(/@|I/g, "")) + poolId;
6504
+ if (!Number.isFinite(id)) {
6505
+ return;
6506
+ }
6507
+ const slug = this.toNaturalName()?.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || String(id);
6508
+ if (treeToken) {
6509
+ return `https://www.${www}/profile-${treeToken}-${id}/${slug}`;
6510
+ }
6445
6511
  const site = this.getMyHeritageTreeId();
6446
- const file = (this.getFromSourceHeads("FILE.value") || this._gedcom?.HEAD?.get("FILE")?.toValue())?.match(/Exported by MyHeritage.com from .+ in (?<site>.+) on .+$/)?.groups?.site;
6447
- const normalizedFile = file?.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-");
6448
- if (normalizedFile && this.id) {
6449
- const id = Number(this.id.replace(/@|I/g, "")) + poolId;
6450
- return `https://www.${www}/site-family-tree-${site}/${normalizedFile}#!profile-${id}-info`;
6512
+ if (site) {
6513
+ return `https://www.${www}/person-${id}_${site}_${site}/${slug}`;
6451
6514
  }
6452
6515
  }
6453
6516
  myheritageMedia() {
@@ -6496,6 +6559,14 @@ var Indi = class extends Common {
6496
6559
  });
6497
6560
  return list;
6498
6561
  }
6562
+ geniLink() {
6563
+ if (!this.id) {
6564
+ return;
6565
+ }
6566
+ const id = this.id.replace(/@|I/g, "");
6567
+ const given = this.toNaturalName()?.trim().split(/\s+/)[0] || id;
6568
+ return `https://www.geni.com/people/${given}/${id}`;
6569
+ }
6499
6570
  familySearchLink() {
6500
6571
  const wwwTags = this.get("WWW")?.toList();
6501
6572
  const wwwTag = wwwTags?.find((wwwTag2) => {
@@ -6776,12 +6847,15 @@ var Indi = class extends Common {
6776
6847
  );
6777
6848
  return void 0;
6778
6849
  }
6779
- link(poolId) {
6850
+ link(poolId, treeToken) {
6780
6851
  if (this?.isAncestry()) {
6781
6852
  return this.ancestryLink();
6782
6853
  }
6783
6854
  if (this?.isMyHeritage()) {
6784
- return this.myheritageLink(poolId);
6855
+ return this.myheritageLink(poolId, treeToken);
6856
+ }
6857
+ if (this?.isGeni()) {
6858
+ return this.geniLink();
6785
6859
  }
6786
6860
  if (this?.isFamilySearch()) {
6787
6861
  return this.familySearchLink();
@@ -1 +1 @@
1
- {"version":3,"file":"kinship-translator.en.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/kinship-translator.en.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAGhE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,sBAAsB;IACtE,OAAO,CAAC,YAAY;IAiBpB,QAAQ;IAaR,OAAO;IAcP,MAAM;IAeN,OAAO;IAkBP,MAAM;IAcN,KAAK;IAcL,OAAO;IAYP,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAYvC,MAAM;IAYN,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBtC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IA0BhC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAiCnC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAO1C"}
1
+ {"version":3,"file":"kinship-translator.en.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/kinship-translator.en.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAGhE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,sBAAsB;IACtE,OAAO,CAAC,YAAY;IAiBpB,QAAQ;IAaR,OAAO;IAcP,MAAM;IAeN,OAAO;IAkBP,MAAM;IAcN,KAAK;IAcL,OAAO;IAYP,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAYvC,MAAM;IAYN,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBtC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IA0BhC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAiCnC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAe1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"kinship-translator.hu.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/kinship-translator.hu.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAIhE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,sBAAsB;IACtE,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,YAAY;IA+BpB,QAAQ;IAaR,OAAO;IAgBP,MAAM;IA6BN,OAAO;IAmCP,MAAM;IA+BN,KAAK;IAYL,OAAO;IAIP,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAcvC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAalB,MAAM;IAYN,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAuBtC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAoChC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IA6CnC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAO1C"}
1
+ {"version":3,"file":"kinship-translator.hu.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/kinship-translator.hu.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAIhE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,sBAAsB;IACtE,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,YAAY;IA+BpB,QAAQ;IAaR,OAAO;IAgBP,MAAM;IA6BN,OAAO;IAmCP,MAAM;IA+BN,KAAK;IAYL,OAAO;IAIP,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAcvC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAalB,MAAM;IAYN,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAmBtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAuBtC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAoChC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IA6CnC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAc1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"kinship-translator.ja.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/kinship-translator.ja.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAgFhE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,sBAAsB;IACtE,QAAQ;IAQR,OAAO;IAeP,MAAM;IAiBN,OAAO;IAiBP,MAAM;IAQN,KAAK;IAQL,OAAO;IAIP,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAOvC,MAAM;IAIN,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAatC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAStC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAsBhC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAanC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CA+B1C"}
1
+ {"version":3,"file":"kinship-translator.ja.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/kinship-translator.ja.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAqHhE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,sBAAsB;IACtE,QAAQ;IAQR,OAAO;IAeP,MAAM;IAiBN,OAAO;IAiBP,MAAM;IAQN,KAAK;IAQL,OAAO;IAIP,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAOvC,MAAM;IAIN,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAatC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAStC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAsBhC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAanC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CA+B1C"}
@@ -1,6 +1,17 @@
1
1
  import type { IndiType } from "../classes/indi";
2
2
  import type { CrossCases } from "./types";
3
- export declare const parentRelationsHu: Record<string, string>;
3
+ /**
4
+ * A string is the same in both directions (mostoha apa / mostoha gyermek).
5
+ * A directed pair flips with the link: the ancestor is the one who raises
6
+ * or adopts (nevelő, örökbefogadó); everyone else was raised or adopted
7
+ * (nevelt, örökbefogadott).
8
+ */
9
+ export type ParentRelationLabel = string | {
10
+ ancestor: string;
11
+ other: string;
12
+ };
13
+ export declare const parentRelationsHu: Record<string, ParentRelationLabel>;
14
+ export declare const parentRelationPrefix: (relation: string, ancestor: boolean) => string | undefined;
4
15
  export declare const casesHu: CrossCases;
5
16
  export declare const InLawsHu: Record<string, string | ((indi?: IndiType) => string | undefined)>;
6
17
  //# sourceMappingURL=patterns.hu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.hu.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/patterns.hu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC;AA4EF,eAAO,MAAM,OAAO,EAAE,UAIrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAC5B,MAAM,EACN,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC,CAsBlD,CAAC"}
1
+ {"version":3,"file":"patterns.hu.d.ts","sourceRoot":"","sources":["../../src/kinship-translator/patterns.hu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,SAAS,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC5B,MAAM,GACN;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAMjE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,UAAU,MAAM,EAChB,UAAU,OAAO,KACf,MAAM,GAAG,SAWX,CAAC;AAsFF,eAAO,MAAM,OAAO,EAAE,UAIrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAC5B,MAAM,EACN,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC,CAkBlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gedzip.d.ts","sourceRoot":"","sources":["../../src/utils/gedzip.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,eAAO,MAAM,WAAW,4CAA4C,CAAC;AACrE,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAaF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAClC,YAAY,MAAM,EAClB,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAgBvD,CAAC;AAmDF;;;GAGG;AACH,eAAO,MAAM,WAAW,GACvB,YAAY,MAAM,EAClB,aAAY,gBAAgB,EAAO,KACjC,OAAO,CAAC,UAAU,CAWpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACrC,CAAC;AAmCF,eAAO,MAAM,cAAc,GAAI,OAAO,UAAU,EAAE,MAAM,MAAM,WAChB,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACxC,WAAW,eAAe,KACxB,MAmBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACzB,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,KACnC,OAAO,CAAC,eAAe,CAwCzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC/B,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,EACrC,UAAU;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,KAC1C,OAAO,CAAC,MAAM,CAMhB,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,YAUA,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC/B,OAAO,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,gBAAgB,CAAC,EACjE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KAChD,OAAO,CAAC,gBAAgB,EAAE,CAoC5B,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,eAAe,GAC3B,YAAY,MAAM,EAClB,aAAY,gBAAgB,EAAO,KACjC,OAAO,CAAC,IAAI,CAMd,CAAC"}
1
+ {"version":3,"file":"gedzip.d.ts","sourceRoot":"","sources":["../../src/utils/gedzip.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,eAAO,MAAM,WAAW,4CAA4C,CAAC;AACrE,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAaF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAClC,YAAY,MAAM,EAClB,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAgBvD,CAAC;AAmDF;;;GAGG;AACH,eAAO,MAAM,WAAW,GACvB,YAAY,MAAM,EAClB,aAAY,gBAAgB,EAAO,KACjC,OAAO,CAAC,UAAU,CAWpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACrC,CAAC;AAmCF,eAAO,MAAM,cAAc,GAAI,OAAO,UAAU,EAAE,MAAM,MAAM,WAChB,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACxC,WAAW,eAAe,KACxB,MAmBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACzB,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,KACnC,OAAO,CAAC,eAAe,CA2CzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC/B,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,EACrC,UAAU;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,KAC1C,OAAO,CAAC,MAAM,CAMhB,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,YAUA,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC/B,OAAO,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,gBAAgB,CAAC,EACjE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KAChD,OAAO,CAAC,gBAAgB,EAAE,CAoC5B,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,eAAe,GAC3B,YAAY,MAAM,EAClB,aAAY,gBAAgB,EAAO,KACjC,OAAO,CAAC,IAAI,CAMd,CAAC"}
@@ -1240,7 +1240,7 @@ var Common = class _Common {
1240
1240
  return this.sourStartsWith("ahnenblatt");
1241
1241
  }
1242
1242
  isGeni() {
1243
- return this.sourStartsWith("geni");
1243
+ return this.sourStartsWith("geni.com");
1244
1244
  }
1245
1245
  isAncestry() {
1246
1246
  return this.sourStartsWith("ancestry");
@@ -3789,10 +3789,12 @@ var relativesOnLevelCache = relativesCache("relativesOnLevelCache");
3789
3789
  var relativesOnDegreeCache = relativesCache("relativesOnDegreeCache");
3790
3790
  var Indi = class extends Common {
3791
3791
  toName() {
3792
- return this.get("NAME")?.toValue();
3792
+ const name = this.get("NAME");
3793
+ const value = name?.index(0)?.toValue() ?? name?.toValue();
3794
+ return typeof value === "string" ? value : void 0;
3793
3795
  }
3794
3796
  toNaturalName() {
3795
- return this.get("NAME")?.toValue()?.replaceAll("/", "");
3797
+ return this.toName()?.replaceAll("/", "");
3796
3798
  }
3797
3799
  toList() {
3798
3800
  return new Individuals().concat(
@@ -4337,17 +4339,25 @@ var Indi = class extends Common {
4337
4339
  }
4338
4340
  return list;
4339
4341
  }
4340
- myheritageLink(poolId = 0) {
4342
+ myheritageLink(poolId = 0, treeToken) {
4341
4343
  let www = (this.getFromSourceHeads("SOUR.CORP.value") || this._gedcom?.HEAD?.SOUR?.CORP?.value)?.toLowerCase().replace(/^www\./gi, "");
4342
4344
  if (!www || /treeviz/i.test(www)) {
4343
4345
  www = "myheritage.com";
4344
4346
  }
4347
+ if (!this.id) {
4348
+ return;
4349
+ }
4350
+ const id = Number(this.id.replace(/@|I/g, "")) + poolId;
4351
+ if (!Number.isFinite(id)) {
4352
+ return;
4353
+ }
4354
+ const slug = this.toNaturalName()?.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || String(id);
4355
+ if (treeToken) {
4356
+ return `https://www.${www}/profile-${treeToken}-${id}/${slug}`;
4357
+ }
4345
4358
  const site = this.getMyHeritageTreeId();
4346
- const file = (this.getFromSourceHeads("FILE.value") || this._gedcom?.HEAD?.get("FILE")?.toValue())?.match(/Exported by MyHeritage.com from .+ in (?<site>.+) on .+$/)?.groups?.site;
4347
- const normalizedFile = file?.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-");
4348
- if (normalizedFile && this.id) {
4349
- const id = Number(this.id.replace(/@|I/g, "")) + poolId;
4350
- return `https://www.${www}/site-family-tree-${site}/${normalizedFile}#!profile-${id}-info`;
4359
+ if (site) {
4360
+ return `https://www.${www}/person-${id}_${site}_${site}/${slug}`;
4351
4361
  }
4352
4362
  }
4353
4363
  myheritageMedia() {
@@ -4396,6 +4406,14 @@ var Indi = class extends Common {
4396
4406
  });
4397
4407
  return list;
4398
4408
  }
4409
+ geniLink() {
4410
+ if (!this.id) {
4411
+ return;
4412
+ }
4413
+ const id = this.id.replace(/@|I/g, "");
4414
+ const given = this.toNaturalName()?.trim().split(/\s+/)[0] || id;
4415
+ return `https://www.geni.com/people/${given}/${id}`;
4416
+ }
4399
4417
  familySearchLink() {
4400
4418
  const wwwTags = this.get("WWW")?.toList();
4401
4419
  const wwwTag = wwwTags?.find((wwwTag2) => {
@@ -4676,12 +4694,15 @@ var Indi = class extends Common {
4676
4694
  );
4677
4695
  return void 0;
4678
4696
  }
4679
- link(poolId) {
4697
+ link(poolId, treeToken) {
4680
4698
  if (this?.isAncestry()) {
4681
4699
  return this.ancestryLink();
4682
4700
  }
4683
4701
  if (this?.isMyHeritage()) {
4684
- return this.myheritageLink(poolId);
4702
+ return this.myheritageLink(poolId, treeToken);
4703
+ }
4704
+ if (this?.isGeni()) {
4705
+ return this.geniLink();
4685
4706
  }
4686
4707
  if (this?.isFamilySearch()) {
4687
4708
  return this.familySearchLink();
@@ -6441,11 +6462,28 @@ var KinshipTranslatorBasic = class {
6441
6462
  // src/kinship-translator/patterns.hu.ts
6442
6463
  var parentRelationsHu = {
6443
6464
  step: "mostoha",
6444
- foster: "nevelt",
6465
+ foster: { ancestor: "nevel\u0151", other: "nevelt" },
6445
6466
  birth: "v\xE9rszerinti",
6446
6467
  biological: "v\xE9rszerinti",
6447
- adopted: "\xF6r\xF6kbefogadott"
6468
+ adopted: { ancestor: "\xF6r\xF6kbefogad\xF3", other: "\xF6r\xF6kbefogadott" }
6469
+ };
6470
+ var parentRelationPrefix = (relation, ancestor) => {
6471
+ const label = parentRelationsHu[relation];
6472
+ if (!label) {
6473
+ return;
6474
+ }
6475
+ if (typeof label === "string") {
6476
+ return label;
6477
+ }
6478
+ return ancestor ? label.ancestor : label.other;
6448
6479
  };
6480
+ var parentRelationModifiers = [
6481
+ ...new Set(
6482
+ Object.values(parentRelationsHu).flatMap(
6483
+ (label) => typeof label === "string" ? [label] : [label.ancestor, label.other]
6484
+ )
6485
+ )
6486
+ ].join("|");
6449
6487
  var nominativus = {
6450
6488
  apa: { nominativus: "apa", dativus: "apj\xE1nak", possessivus: "apja" },
6451
6489
  anya: { nominativus: "anya", dativus: "anyj\xE1nak", possessivus: "anyja" },
@@ -6523,15 +6561,9 @@ var casesHu = {
6523
6561
  var InLawsHu = {
6524
6562
  "gyermek feles\xE9ge": "meny",
6525
6563
  "gyermek f\xE9rje": "v\u0151",
6526
- [`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
6527
- "|"
6528
- )}) )?anyja`]: "any\xF3s",
6529
- [`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
6530
- "|"
6531
- )}) )?apja`]: "ap\xF3s",
6532
- [`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
6533
- "|"
6534
- )}) )?(f\xE9l)?testv\xE9re`]: (indi) => {
6564
+ [`(f\xE9rj|feles\xE9g) (?<mod1>(${parentRelationModifiers}) )?anyja`]: "any\xF3s",
6565
+ [`(f\xE9rj|feles\xE9g) (?<mod1>(${parentRelationModifiers}) )?apja`]: "ap\xF3s",
6566
+ [`(f\xE9rj|feles\xE9g) (?<mod1>(${parentRelationModifiers}) )?(f\xE9l)?testv\xE9re`]: (indi) => {
6535
6567
  if (indi?.isMale()) {
6536
6568
  return "s\xF3gor";
6537
6569
  }
@@ -6808,7 +6840,12 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
6808
6840
  if (!relation || !this.pathN?.relation) {
6809
6841
  return relation ?? "";
6810
6842
  }
6811
- return `${parentRelationsHu[this.pathN.relation]} ${relation}`;
6843
+ const isAncestor = (this.pathN.level ?? 0) > 0 && (this.pathN.degree ?? 0) === 0;
6844
+ const prefix = parentRelationPrefix(this.pathN.relation, isAncestor);
6845
+ if (!prefix) {
6846
+ return relation;
6847
+ }
6848
+ return `${prefix} ${relation}`;
6812
6849
  }
6813
6850
  };
6814
6851
 
@@ -7008,6 +7045,10 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
7008
7045
  if (!relation || !this.pathN?.relation) {
7009
7046
  return relation ?? "";
7010
7047
  }
7048
+ if (this.pathN.relation === "adopted") {
7049
+ const isAncestor = (this.pathN.level ?? 0) > 0 && (this.pathN.degree ?? 0) === 0;
7050
+ return `${isAncestor ? "adoptive" : "adopted"} ${relation}`;
7051
+ }
7011
7052
  return `${this.pathN.relation} ${relation}`;
7012
7053
  }
7013
7054
  };
@@ -8166,6 +8207,39 @@ var lineal = (level, sex, kind) => {
8166
8207
  }
8167
8208
  return `${L - 1}\u4E16\u306E\u5B6B`;
8168
8209
  };
8210
+ var adoptedRelation = (relation) => {
8211
+ if (relation === "\u7236") {
8212
+ return "\u990A\u7236";
8213
+ }
8214
+ if (relation === "\u6BCD") {
8215
+ return "\u990A\u6BCD";
8216
+ }
8217
+ if (relation === "\u89AA") {
8218
+ return "\u990A\u89AA";
8219
+ }
8220
+ if (relation === "\u606F\u5B50" || relation === "\u5B50") {
8221
+ return "\u990A\u5B50";
8222
+ }
8223
+ if (relation === "\u5A18") {
8224
+ return "\u990A\u5973";
8225
+ }
8226
+ return `\u990A${relation}`;
8227
+ };
8228
+ var fosterRelation = (relation) => {
8229
+ if (relation === "\u7236") {
8230
+ return "\u91CC\u7236";
8231
+ }
8232
+ if (relation === "\u6BCD") {
8233
+ return "\u91CC\u6BCD";
8234
+ }
8235
+ if (relation === "\u89AA") {
8236
+ return "\u91CC\u89AA";
8237
+ }
8238
+ if (relation === "\u606F\u5B50" || relation === "\u5A18" || relation === "\u5B50") {
8239
+ return "\u91CC\u5B50";
8240
+ }
8241
+ return `\u91CC${relation}`;
8242
+ };
8169
8243
  var cousinPlain = (degree) => {
8170
8244
  if (degree <= 1) {
8171
8245
  return "\u3044\u3068\u3053";
@@ -8325,10 +8399,10 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
8325
8399
  return `\u7D99${relation}`;
8326
8400
  }
8327
8401
  if (this.pathN.relation === "adopted") {
8328
- return `\u990A\u5B50\u306E${relation}`;
8402
+ return adoptedRelation(relation);
8329
8403
  }
8330
8404
  if (this.pathN.relation === "foster") {
8331
- return `\u91CC\u89AA\u306E${relation}`;
8405
+ return fosterRelation(relation);
8332
8406
  }
8333
8407
  return relation;
8334
8408
  }
@@ -9336,7 +9410,8 @@ var extractGedzip = async (data) => {
9336
9410
  if (!preferred) {
9337
9411
  throw new Error("No .ged file found in the archive.");
9338
9412
  }
9339
- const gedcomText = await preferred.async("string");
9413
+ const gedcomBytes = await preferred.async("uint8array");
9414
+ const gedcomText = new TextDecoder("utf-8").decode(gedcomBytes);
9340
9415
  const mediaEntries = [];
9341
9416
  for (const entry of entries) {
9342
9417
  const path = normalizeZipPath(entry.name);
@@ -9910,7 +9985,7 @@ var collectExtensionTagsFrom = (node, into = /* @__PURE__ */ new Set()) => {
9910
9985
  // package.json
9911
9986
  var package_default = {
9912
9987
  name: "@treeviz/gedcom-parser",
9913
- version: "2.1.18"};
9988
+ version: "2.1.22"};
9914
9989
 
9915
9990
  // src/utils/get-product-details.ts
9916
9991
  var isDevelopment = () => {
@@ -11060,6 +11135,7 @@ var GedcomTree = {
11060
11135
  return this.parseHierarchy(content, options);
11061
11136
  },
11062
11137
  parseHierarchy: function(content, options) {
11138
+ content = content.replace(/^\uFEFF+/, "");
11063
11139
  const { settings, filename = "" } = options ?? {};
11064
11140
  const { linkedPersons = "skip", linkingKey } = settings ?? {};
11065
11141
  const gedcom = createGedCom();
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAgB7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAuB,QAAQ,EAAW,MAAM,gBAAgB,CAAC;AA4D7E,QAAA,MAAM,UAAU;qBAEL,MAAM,YACL;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;8BAK3C,MAAM,YACL;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;oBA6ThD,MAAM,QACJ,QAAQ,UACN,MAAM,QACR,MAAM;CAuBb,CAAC;AAOF,eAAe,UAAU,CAAC;AAE1B,eAAO,MAAM,iBAAiB,GAAI,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,4BAchE,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAgB7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAuB,QAAQ,EAAW,MAAM,gBAAgB,CAAC;AA4D7E,QAAA,MAAM,UAAU;qBAEL,MAAM,YACL;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;8BAK3C,MAAM,YACL;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;oBAgUhD,MAAM,QACJ,QAAQ,UACN,MAAM,QACR,MAAM;CAuBb,CAAC;AAOF,eAAe,UAAU,CAAC;AAE1B,eAAO,MAAM,iBAAiB,GAAI,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,4BAchE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeviz/gedcom-parser",
3
- "version": "2.1.18",
3
+ "version": "2.1.22",
4
4
  "description": "Lightweight, pluggable GEDCOM parser for JavaScript/TypeScript with optional caching and place matching. Zero browser dependencies.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",