@treeviz/gedcom-parser 1.0.22 → 2.0.0

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.
@@ -1,4 +1,4 @@
1
- import { x as Filter, y as RequiredFilter, W as RelationType, X as PartnerType, A as Order, K as NameOrder, B as OrderIterator, a1 as IndiType, n as IndiKey } from '../index-BPEVN_DY.js';
1
+ import { aT as RequiredFilter, aO as RelationType, n as Filter, aA as PartnerType, ax as Order, az as OrderIterator, af as IndiType, ac as IndiKey, ap as NameOrder } from '../index-CzYZg44D.js';
2
2
  import 'date-fns';
3
3
 
4
4
  /**
@@ -97,66 +97,125 @@ __export(translators_exports, {
97
97
  fr: () => KinshipTranslatorFr,
98
98
  hu: () => KinshipTranslatorHU
99
99
  });
100
+ var getGedcomId = (gedcom) => {
101
+ if (!gedcom) {
102
+ return "unknown";
103
+ }
104
+ const treeId = gedcom.getTreeId?.() || "";
105
+ const treeName = gedcom.getTreeName?.() || "";
106
+ const sanitizedName = treeName.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
107
+ if (treeId && sanitizedName) {
108
+ return `${treeId}_${sanitizedName}`;
109
+ } else if (treeId) {
110
+ return treeId;
111
+ } else if (sanitizedName) {
112
+ return sanitizedName;
113
+ }
114
+ return `gedcom_${gedcom.refcount}`;
115
+ };
100
116
  var caches = {
101
117
  pathCache: {},
102
118
  relativesOnDegreeCache: {},
103
- relativesOnLevelCache: {}
119
+ relativesOnLevelCache: {},
120
+ profilePictureCache: {}
104
121
  };
105
- var getInstance = getCacheManagerFactory();
106
- var cacheDbs = {
107
- pathCache: getInstance("ftv", "Main", "path", true),
108
- relativesOnDegreeCache: getInstance(
109
- "ftv",
110
- "Main",
111
- "path",
112
- true
113
- ),
114
- relativesOnLevelCache: getInstance(
115
- "ftv",
116
- "Main",
117
- "path",
118
- true
119
- )
122
+ var cacheDbs;
123
+ var getCacheDbs = () => {
124
+ if (!cacheDbs) {
125
+ const getInstance = getCacheManagerFactory();
126
+ cacheDbs = {
127
+ pathCache: getInstance(
128
+ "ftv",
129
+ "Main",
130
+ "path",
131
+ true
132
+ ),
133
+ relativesOnDegreeCache: getInstance("ftv", "Main", "path", true),
134
+ relativesOnLevelCache: getInstance(
135
+ "ftv",
136
+ "Main",
137
+ "path",
138
+ true
139
+ ),
140
+ profilePictureCache: getInstance(
141
+ "ftv",
142
+ "Main",
143
+ "images",
144
+ false
145
+ )
146
+ };
147
+ }
148
+ return cacheDbs;
120
149
  };
121
- ({
150
+ var storeCache = {
151
+ // NOTE: pathCache, relativesOnLevelCache, and relativesOnDegreeCache are intentionally
152
+ // kept in memory only. These debounced functions exist to satisfy the type system
153
+ // but are never called.
122
154
  pathCache: debounce((value) => {
123
155
  if (value) {
124
- cacheDbs.pathCache.setItem(value);
156
+ getCacheDbs().pathCache.setItem(value);
125
157
  }
126
158
  }, 50),
127
159
  relativesOnLevelCache: debounce((value) => {
128
160
  if (value) {
129
- cacheDbs.relativesOnLevelCache.setItem(value);
161
+ getCacheDbs().relativesOnLevelCache.setItem(value);
130
162
  }
131
163
  }, 50),
132
164
  relativesOnDegreeCache: debounce((value) => {
133
165
  if (value) {
134
- cacheDbs.relativesOnDegreeCache.setItem(value);
166
+ getCacheDbs().relativesOnDegreeCache.setItem(value);
135
167
  }
136
- }, 50)
137
- });
138
- var relativesCache = (cacheKey) => (key, subKey, value) => {
139
- if (!caches[cacheKey]) {
168
+ }, 50),
169
+ // profilePictureCache IS persisted to IndexedDB
170
+ profilePictureCache: debounce((value) => {
171
+ if (value) {
172
+ getCacheDbs().profilePictureCache.setItem(value);
173
+ }
174
+ }, 100)
175
+ };
176
+ var relativesCache = (cacheKey) => (gedcom, key, subKey, value) => {
177
+ const gedcomId = getGedcomId(gedcom);
178
+ const fullKey = `${gedcomId}:${key}`;
179
+ const cache = caches[cacheKey];
180
+ if (!cache) {
140
181
  caches[cacheKey] = {};
141
182
  }
142
- if (value && caches[cacheKey]) {
143
- if (!caches[cacheKey][key]) {
144
- caches[cacheKey][key] = {};
183
+ if (value) {
184
+ const typedCache2 = caches[cacheKey];
185
+ if (!typedCache2[fullKey]) {
186
+ typedCache2[fullKey] = {};
145
187
  }
146
- caches[cacheKey][key][subKey] = value;
147
- return caches[cacheKey][key][subKey];
188
+ typedCache2[fullKey][subKey] = value;
189
+ return typedCache2[fullKey][subKey];
148
190
  }
149
- return caches[cacheKey]?.[key]?.[subKey];
191
+ const typedCache = caches[cacheKey];
192
+ return typedCache?.[fullKey]?.[subKey];
150
193
  };
151
- var pathCache = (key, value) => {
194
+ var pathCache = (gedcom, key, value) => {
195
+ const gedcomId = getGedcomId(gedcom);
196
+ const fullKey = `${gedcomId}:${key}`;
152
197
  if (!caches.pathCache) {
153
198
  caches.pathCache = {};
154
199
  }
155
200
  if (value && caches.pathCache) {
156
- caches.pathCache[key] = value;
157
- return caches.pathCache[key];
201
+ caches.pathCache[fullKey] = value;
202
+ return caches.pathCache[fullKey];
158
203
  }
159
- return caches.pathCache?.[key];
204
+ return caches.pathCache?.[fullKey];
205
+ };
206
+ var profilePictureCache = (gedcom, key, value) => {
207
+ const gedcomId = getGedcomId(gedcom);
208
+ const fullKey = `${gedcomId}:${key}`;
209
+ if (!caches.profilePictureCache) {
210
+ caches.profilePictureCache = {};
211
+ }
212
+ if (value && caches.profilePictureCache) {
213
+ caches.profilePictureCache[fullKey] = value;
214
+ storeCache.profilePictureCache(caches.profilePictureCache);
215
+ return caches.profilePictureCache[fullKey];
216
+ }
217
+ const cached = caches.profilePictureCache?.[fullKey];
218
+ return cached;
160
219
  };
161
220
 
162
221
  // src/utils/get-all-prop.ts
@@ -707,11 +766,30 @@ var Common = class _Common {
707
766
  const sour = get(head, "SOUR.value");
708
767
  return !!sour?.toLowerCase()?.startsWith("myheritage");
709
768
  }
769
+ /**
770
+ * Get the source type as a string (for prefixing tree IDs and names)
771
+ * Returns the detected source type or undefined if unknown
772
+ */
773
+ getSourceType() {
774
+ if (this.isAncestry()) return "Ancestry";
775
+ if (this.isMyHeritage()) return "MyHeritage";
776
+ if (this.isFamilySearch()) return "FamilySearch";
777
+ if (this.isGNO2GED()) return "GNO2GED";
778
+ if (this.isGenoPro()) return "GenoPro";
779
+ if (this.isAhnenblatt()) return "Ahnenblatt";
780
+ if (this.isGeni()) return "Geni";
781
+ return void 0;
782
+ }
710
783
  isFamilySearch() {
711
784
  const head = get(this, "HEAD") || get(this.getGedcom(), "HEAD");
712
785
  const sourName = get(head, "SOUR.NAME.value");
713
786
  return sourName === "FamilySearch API";
714
787
  }
788
+ isGNO2GED() {
789
+ const head = get(this, "HEAD") || get(this.getGedcom(), "HEAD");
790
+ const sour = get(head, "SOUR.value");
791
+ return sour === "GNO2GED";
792
+ }
715
793
  getAncestryTreeId() {
716
794
  const path = "HEAD.SOUR._TREE.RIN.value";
717
795
  return get(this, path) || get(this.getGedcom(), path);
@@ -722,11 +800,34 @@ var Common = class _Common {
722
800
  }
723
801
  getTreeId() {
724
802
  if (this?.isAncestry()) {
725
- return this.getAncestryTreeId();
803
+ const id = this.getAncestryTreeId();
804
+ if (id !== void 0) return id;
726
805
  }
727
806
  if (this?.isMyHeritage()) {
728
- return this.getMyHeritageTreeId();
807
+ const id = this.getMyHeritageTreeId();
808
+ if (id !== void 0) return id;
729
809
  }
810
+ if (this?.isFamilySearch()) {
811
+ const id = this.getFamilySearchTreeId();
812
+ if (id !== void 0) return id;
813
+ }
814
+ if (this?.isGNO2GED()) {
815
+ const id = this.getGNO2GEDTreeId();
816
+ if (id !== void 0) return id;
817
+ }
818
+ if (this?.isAhnenblatt()) {
819
+ const id = this.getAhnenblattTreeId();
820
+ if (id !== void 0) return id;
821
+ }
822
+ if (this?.isGeni()) {
823
+ const id = this.getGeniTreeId();
824
+ if (id !== void 0) return id;
825
+ }
826
+ if (this?.isGenoPro()) {
827
+ const id = this.getGenoProTreeId();
828
+ if (id !== void 0) return id;
829
+ }
830
+ return this.getUniversalTreeId();
730
831
  }
731
832
  getAncestryTreeName() {
732
833
  const path = "HEAD.SOUR._TREE.value";
@@ -739,13 +840,146 @@ var Common = class _Common {
739
840
  /Exported by MyHeritage.com from (?<tree>.+) in.+$/
740
841
  )?.groups?.tree;
741
842
  }
843
+ getFamilySearchTreeId() {
844
+ const rin = get(this, "HEAD.SOUR._TREE.RIN.value") || get(this.getGedcom(), "HEAD.SOUR._TREE.RIN.value");
845
+ if (rin) {
846
+ return rin;
847
+ }
848
+ return "familysearch";
849
+ }
850
+ getFamilySearchTreeName() {
851
+ const treeName = get(this, "HEAD.SOUR._TREE.value") || get(this.getGedcom(), "HEAD.SOUR._TREE.value");
852
+ if (treeName) {
853
+ return treeName;
854
+ }
855
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
856
+ return fileName || "FamilySearch Import";
857
+ }
858
+ getAhnenblattTreeId() {
859
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
860
+ if (fileName) {
861
+ const idMatch = fileName.match(/_(\d+)/);
862
+ if (idMatch) {
863
+ return idMatch[1];
864
+ }
865
+ }
866
+ return void 0;
867
+ }
868
+ getAhnenblattTreeName() {
869
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
870
+ return fileName?.replace(/\.ged$/i, "").replace(/_/g, " ");
871
+ }
872
+ getGeniTreeId() {
873
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
874
+ if (fileName) {
875
+ const idMatch = fileName.match(/_(\d+)/);
876
+ if (idMatch) {
877
+ return idMatch[1];
878
+ }
879
+ }
880
+ return void 0;
881
+ }
882
+ getGeniTreeName() {
883
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
884
+ return fileName?.replace(/\.ged$/i, "").replace(/_/g, " ");
885
+ }
886
+ getGenoProTreeId() {
887
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
888
+ if (fileName) {
889
+ const idMatch = fileName.match(/_(\d+)/);
890
+ if (idMatch) {
891
+ return idMatch[1];
892
+ }
893
+ }
894
+ return void 0;
895
+ }
896
+ getGenoProTreeName() {
897
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
898
+ return fileName?.replace(/\.ged$/i, "").replace(/_/g, " ");
899
+ }
900
+ getGNO2GEDTreeId() {
901
+ const rin = get(this, "HEAD._TREE.RIN.value") || get(this.getGedcom(), "HEAD._TREE.RIN.value");
902
+ if (rin) {
903
+ return rin;
904
+ }
905
+ return `gno_${this._gedcom?.refcount || "unknown"}`;
906
+ }
907
+ getGNO2GEDTreeName() {
908
+ const treeName = get(this, "HEAD._TREE.value") || get(this.getGedcom(), "HEAD._TREE.value");
909
+ if (treeName) {
910
+ return treeName;
911
+ }
912
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
913
+ return fileName || "GNO2GED Export";
914
+ }
915
+ /**
916
+ * Universal tree ID getter for unknown/unrecognized GEDCOM sources
917
+ * Tries to extract an ID from various common locations
918
+ */
919
+ getUniversalTreeId() {
920
+ const sourceType = this.getSourceType();
921
+ const prefix = sourceType ? sourceType.toLowerCase() : "tree";
922
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
923
+ if (fileName) {
924
+ const idMatch = fileName.match(/_(\d+)/);
925
+ if (idMatch) {
926
+ return `${prefix}_${idMatch[1]}`;
927
+ }
928
+ }
929
+ return `${prefix}_${this._gedcom?.refcount || "unknown"}`;
930
+ }
931
+ /**
932
+ * Universal tree name getter for unknown/unrecognized GEDCOM sources
933
+ * Tries to extract a name from various common locations
934
+ */
935
+ getUniversalTreeName() {
936
+ const sourceType = this.getSourceType();
937
+ const prefix = sourceType ? `${sourceType}-` : "";
938
+ const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
939
+ if (fileName) {
940
+ const cleanName = fileName.replace(/\.ged$/i, "").replace(/_/g, " ");
941
+ return `${prefix}${cleanName}`;
942
+ }
943
+ const sourName = get(this, "HEAD.SOUR.NAME.value") || get(this.getGedcom(), "HEAD.SOUR.NAME.value");
944
+ if (sourName) {
945
+ return `${prefix}${sourName}`;
946
+ }
947
+ const sourValue = get(this, "HEAD.SOUR.value") || get(this.getGedcom(), "HEAD.SOUR.value");
948
+ if (sourValue) {
949
+ return `${prefix}${sourValue}`;
950
+ }
951
+ return `${prefix}Unknown Tree`;
952
+ }
742
953
  getTreeName() {
743
954
  if (this?.isAncestry()) {
744
- return this.getAncestryTreeName();
955
+ const name = this.getAncestryTreeName();
956
+ if (name) return name;
745
957
  }
746
958
  if (this?.isMyHeritage()) {
747
- return this.getMyHeritageTreeName();
959
+ const name = this.getMyHeritageTreeName();
960
+ if (name) return name;
961
+ }
962
+ if (this?.isFamilySearch()) {
963
+ const name = this.getFamilySearchTreeName();
964
+ if (name) return name;
965
+ }
966
+ if (this?.isGNO2GED()) {
967
+ const name = this.getGNO2GEDTreeName();
968
+ if (name) return name;
748
969
  }
970
+ if (this?.isAhnenblatt()) {
971
+ const name = this.getAhnenblattTreeName();
972
+ if (name) return name;
973
+ }
974
+ if (this?.isGeni()) {
975
+ const name = this.getGeniTreeName();
976
+ if (name) return name;
977
+ }
978
+ if (this?.isGenoPro()) {
979
+ const name = this.getGenoProTreeName();
980
+ if (name) return name;
981
+ }
982
+ return this.getUniversalTreeName();
749
983
  }
750
984
  };
751
985
  var createProxy = (target) => {
@@ -2522,7 +2756,7 @@ var Indi = class extends Common {
2522
2756
  }
2523
2757
  async ancestryMedia(namespace) {
2524
2758
  const list = {};
2525
- const objeList = this.get("OBJE")?.toList();
2759
+ const objeList = this.get("OBJE")?.toList().copy();
2526
2760
  const www = this._gedcom?.HEAD?.SOUR?.CORP?.WWW?.value;
2527
2761
  const tree = this.getAncestryTreeId();
2528
2762
  if (objeList) {
@@ -2596,11 +2830,12 @@ var Indi = class extends Common {
2596
2830
  if (!tree) {
2597
2831
  return;
2598
2832
  }
2599
- const objeList = this.get("OBJE")?.toList();
2600
- const birthObj = this.get("BIRT.OBJE")?.toList();
2601
- const deathObj = this.get("DEAT.OBJE")?.toList();
2833
+ const objeList = this.get("OBJE")?.toList().copy();
2834
+ const birthObj = this.get("BIRT.OBJE")?.toList().copy();
2835
+ const deathObj = this.get("DEAT.OBJE")?.toList().copy();
2836
+ objeList?.merge(birthObj).merge(deathObj);
2602
2837
  (this.get("FAMS")?.toValueList().values() ?? []).concat(this.get("FAMC")?.toValueList().values() ?? []).forEach((fam) => {
2603
- objeList?.merge(birthObj).merge(deathObj).merge(fam?.get("MARR.OBJE"));
2838
+ objeList.merge(fam?.get("MARR.OBJE"));
2604
2839
  });
2605
2840
  objeList?.forEach((o, index) => {
2606
2841
  if (!o) {
@@ -2718,6 +2953,88 @@ var Indi = class extends Common {
2718
2953
  };
2719
2954
  });
2720
2955
  }
2956
+ geniMedia() {
2957
+ const list = {};
2958
+ const objeList = this.get("OBJE")?.toList().copy();
2959
+ const sourList = this.get("SOUR")?.toList().copy();
2960
+ sourList?.forEach((sour) => {
2961
+ const sourObje = sour?.get("OBJE")?.toList();
2962
+ objeList.merge(sourObje);
2963
+ });
2964
+ if (!objeList || objeList.length === 0) {
2965
+ return void 0;
2966
+ }
2967
+ const rfn = this.get("RFN")?.toValue();
2968
+ const geniId = rfn?.replace(/^geni:/, "") || "unknown";
2969
+ objeList.forEach((obje, index) => {
2970
+ if (!obje) {
2971
+ return;
2972
+ }
2973
+ const key = `@O${index}@`;
2974
+ const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
2975
+ const url = obje?.get("FILE")?.toValue();
2976
+ const title = obje?.get("TITL")?.toValue() ?? "";
2977
+ const type = obje?.get("FORM")?.toValue() ?? "raw";
2978
+ if (url) {
2979
+ const urlMatch = url.match(/\/([^/]+)\?hash=/);
2980
+ const imgId = urlMatch?.[1] || `img-${index}-${Date.now().toString(36)}`;
2981
+ const id = `geni-${geniId}-${imgId}`;
2982
+ list[id] = {
2983
+ isPrimary,
2984
+ key,
2985
+ id,
2986
+ tree: geniId,
2987
+ imgId,
2988
+ person: this.id,
2989
+ title,
2990
+ url,
2991
+ contentType: type,
2992
+ downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
2993
+ };
2994
+ }
2995
+ });
2996
+ return list;
2997
+ }
2998
+ universalMedia() {
2999
+ const list = {};
3000
+ if (!this.id) {
3001
+ return list;
3002
+ }
3003
+ const objeList = this.get("OBJE")?.toList().copy();
3004
+ if (!objeList || objeList.length === 0) {
3005
+ return list;
3006
+ }
3007
+ const rfn = this.get("RFN")?.toValue();
3008
+ const treeId = rfn || "universal";
3009
+ objeList.forEach((obje, index) => {
3010
+ if (!obje) {
3011
+ return;
3012
+ }
3013
+ const key = `@O${index}@`;
3014
+ obje.standardizeMedia();
3015
+ const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
3016
+ const url = obje?.get("FILE")?.toValue();
3017
+ const title = obje?.get("TITL")?.toValue() ?? "";
3018
+ const type = obje?.get("FORM")?.toValue() ?? "raw";
3019
+ if (url) {
3020
+ const imgId = `media-${index}-${url.split("/").pop()?.split("?")[0]?.substring(0, 20) || Date.now().toString(36)}`;
3021
+ const id = `${treeId}-${this.id}-${imgId}`;
3022
+ list[id] = {
3023
+ isPrimary,
3024
+ key,
3025
+ id,
3026
+ tree: treeId,
3027
+ imgId,
3028
+ person: this.id,
3029
+ title,
3030
+ url,
3031
+ contentType: type,
3032
+ downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
3033
+ };
3034
+ }
3035
+ });
3036
+ return list;
3037
+ }
2721
3038
  async multimedia(namespace) {
2722
3039
  if (this?.isAncestry()) {
2723
3040
  return await this.ancestryMedia(namespace);
@@ -2725,11 +3042,30 @@ var Indi = class extends Common {
2725
3042
  if (this?.isMyHeritage()) {
2726
3043
  return this.myheritageMedia();
2727
3044
  }
2728
- return void 0;
3045
+ if (this?.isGeni()) {
3046
+ return this.geniMedia();
3047
+ }
3048
+ return this.universalMedia();
2729
3049
  }
2730
- async getProfilePicture(namespace) {
3050
+ async getProfilePicture(namespace, onlyPrimary = true) {
3051
+ if (!this.id) {
3052
+ return void 0;
3053
+ }
3054
+ const cacheKey = this.id;
3055
+ const cached = profilePictureCache(
3056
+ this._gedcom,
3057
+ cacheKey
3058
+ );
3059
+ if (cached !== void 0) {
3060
+ return cached;
3061
+ }
2731
3062
  const mediaList = await this.multimedia(namespace);
2732
3063
  if (!mediaList) {
3064
+ profilePictureCache(
3065
+ this._gedcom,
3066
+ cacheKey,
3067
+ void 0
3068
+ );
2733
3069
  return void 0;
2734
3070
  }
2735
3071
  const mediaArray = Object.values(mediaList);
@@ -2737,24 +3073,41 @@ var Indi = class extends Common {
2737
3073
  (media) => media.isPrimary && isImageFormat(media.contentType || getFileExtension(media.url))
2738
3074
  );
2739
3075
  if (primaryMedia) {
2740
- return {
3076
+ const result = {
2741
3077
  file: primaryMedia.url,
2742
3078
  form: primaryMedia.contentType,
2743
3079
  title: primaryMedia.title,
2744
3080
  isPrimary: true
2745
3081
  };
3082
+ profilePictureCache(this._gedcom, cacheKey, result);
3083
+ return result;
3084
+ }
3085
+ if (onlyPrimary) {
3086
+ profilePictureCache(
3087
+ this._gedcom,
3088
+ cacheKey,
3089
+ void 0
3090
+ );
3091
+ return void 0;
2746
3092
  }
2747
3093
  const secondaryMedia = mediaArray.find(
2748
3094
  (media) => isImageFormat(media.contentType || getFileExtension(media.url))
2749
3095
  );
2750
3096
  if (secondaryMedia) {
2751
- return {
3097
+ const result = {
2752
3098
  file: secondaryMedia.url,
2753
3099
  form: secondaryMedia.contentType,
2754
3100
  title: secondaryMedia.title,
2755
3101
  isPrimary: false
2756
3102
  };
3103
+ profilePictureCache(this._gedcom, cacheKey, result);
3104
+ return result;
2757
3105
  }
3106
+ profilePictureCache(
3107
+ this._gedcom,
3108
+ cacheKey,
3109
+ void 0
3110
+ );
2758
3111
  return void 0;
2759
3112
  }
2760
3113
  link(poolId) {
@@ -3122,7 +3475,7 @@ var Indi = class extends Common {
3122
3475
  return;
3123
3476
  }
3124
3477
  const cacheKey = `${this.id}|${usedIndi.id}`;
3125
- const cache = pathCache(cacheKey);
3478
+ const cache = pathCache(this._gedcom, cacheKey);
3126
3479
  if (cache) {
3127
3480
  return cache;
3128
3481
  }
@@ -3167,7 +3520,7 @@ var Indi = class extends Common {
3167
3520
  if (breakOnNext) {
3168
3521
  return void 0;
3169
3522
  }
3170
- pathCache(cacheKey, path2);
3523
+ pathCache(this._gedcom, cacheKey, path2);
3171
3524
  return path2;
3172
3525
  }
3173
3526
  visited.append(indi);
@@ -3337,7 +3690,7 @@ var Indi = class extends Common {
3337
3690
  }
3338
3691
  getRelativesOnDegree(degree = 0) {
3339
3692
  this.id = this.id || `@I${Math.random()}@`;
3340
- const cache = relativesOnDegreeCache(this.id, degree);
3693
+ const cache = relativesOnDegreeCache(this._gedcom, this.id, degree);
3341
3694
  if (cache) {
3342
3695
  return cache;
3343
3696
  }
@@ -3345,6 +3698,7 @@ var Indi = class extends Common {
3345
3698
  const excludes = persons;
3346
3699
  if (!Math.abs(degree)) {
3347
3700
  return relativesOnDegreeCache(
3701
+ this._gedcom,
3348
3702
  this.id,
3349
3703
  degree,
3350
3704
  persons.except(this)
@@ -3355,11 +3709,11 @@ var Indi = class extends Common {
3355
3709
  excludes.merge(persons);
3356
3710
  persons = this.getRelativesOnLevel(validDegree).getRelativesOnDegree(-validDegree).copy().exclude(excludes);
3357
3711
  }
3358
- return relativesOnDegreeCache(this.id, degree, persons);
3712
+ return relativesOnDegreeCache(this._gedcom, this.id, degree, persons);
3359
3713
  }
3360
3714
  getRelativesOnLevel(level = 0, filter) {
3361
3715
  this.id = this.id || `@I${Math.random()}@`;
3362
- const cache = relativesOnLevelCache(this.id, level);
3716
+ const cache = relativesOnLevelCache(this._gedcom, this.id, level);
3363
3717
  if (cache) {
3364
3718
  return cache;
3365
3719
  }
@@ -3370,7 +3724,7 @@ var Indi = class extends Common {
3370
3724
  };
3371
3725
  let families = this.get(config.key)?.toValueList();
3372
3726
  if (!families) {
3373
- return relativesOnLevelCache(this.id, level, persons);
3727
+ return relativesOnLevelCache(this._gedcom, this.id, level, persons);
3374
3728
  }
3375
3729
  if (filter) {
3376
3730
  families = families.filter(filter);
@@ -3381,7 +3735,12 @@ var Indi = class extends Common {
3381
3735
  persons = this.toFamilies(families).getParents();
3382
3736
  }
3383
3737
  if (level >= -1 && level <= 1) {
3384
- return relativesOnLevelCache(this.id, level, persons.except(this));
3738
+ return relativesOnLevelCache(
3739
+ this._gedcom,
3740
+ this.id,
3741
+ level,
3742
+ persons.except(this)
3743
+ );
3385
3744
  }
3386
3745
  for (let i = 1; i < Math.abs(level); i++) {
3387
3746
  if (config.isAscendant) {
@@ -3390,7 +3749,12 @@ var Indi = class extends Common {
3390
3749
  persons = persons.getParents();
3391
3750
  }
3392
3751
  }
3393
- return relativesOnLevelCache(this.id, level, persons.except(this));
3752
+ return relativesOnLevelCache(
3753
+ this._gedcom,
3754
+ this.id,
3755
+ level,
3756
+ persons.except(this)
3757
+ );
3394
3758
  }
3395
3759
  getAscendants(level = 0, filter) {
3396
3760
  if (!level) {
@@ -3429,7 +3793,12 @@ var Indi = class extends Common {
3429
3793
  }
3430
3794
  currentGen++;
3431
3795
  generations[currentGen] = descentants;
3432
- relativesOnLevelCache(this.id, -currentGen, descentants);
3796
+ relativesOnLevelCache(
3797
+ this._gedcom,
3798
+ this.id,
3799
+ -currentGen,
3800
+ descentants
3801
+ );
3433
3802
  descentants && relatives.merge(descentants);
3434
3803
  }
3435
3804
  return { relatives, generations };
@@ -3462,7 +3831,7 @@ var Indi = class extends Common {
3462
3831
  }
3463
3832
  currentGen++;
3464
3833
  generations[currentGen] = parents;
3465
- relativesOnLevelCache(this.id, currentGen, parents);
3834
+ relativesOnLevelCache(this._gedcom, this.id, currentGen, parents);
3466
3835
  parents && relatives.merge(parents);
3467
3836
  }
3468
3837
  return { relatives, generations };
@@ -1,6 +1,6 @@
1
- import { I as ICacheManager, P as PlaceParts } from '../place-parser-CM0TJFj8.js';
1
+ import { I as ICacheManager, P as PlaceParts } from '../place-parser-CJ3EbFmb.js';
2
2
  import { Locale } from 'date-fns';
3
- import { a1 as IndiType, n as IndiKey, L as Language } from '../index-BPEVN_DY.js';
3
+ import { af as IndiType, ac as IndiKey, ai as Language } from '../index-CzYZg44D.js';
4
4
 
5
5
  /**
6
6
  * Factory function type for creating cache manager instances.