@treeviz/gedcom-parser 2.1.17 → 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.
- package/dist/classes/common.d.ts +19 -1
- package/dist/classes/common.d.ts.map +1 -1
- package/dist/classes/index.js +276 -80
- package/dist/classes/indi.d.ts +3 -2
- package/dist/classes/indi.d.ts.map +1 -1
- package/dist/classes/obje.d.ts +1 -1
- package/dist/classes/obje.d.ts.map +1 -1
- package/dist/cli/index.js +277 -80
- package/dist/constants/index.js +255 -61
- package/dist/factories/index.js +255 -61
- package/dist/index.js +281 -83
- package/dist/kinship-translator/index.js +255 -61
- package/dist/kinship-translator/kinship-translator.en.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.hu.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.ja.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.hu.d.ts +12 -1
- package/dist/kinship-translator/patterns.hu.d.ts.map +1 -1
- package/dist/utils/gedzip.d.ts.map +1 -1
- package/dist/utils/index.js +281 -83
- package/dist/utils/media-utils.d.ts +10 -0
- package/dist/utils/media-utils.d.ts.map +1 -1
- package/dist/utils/multimedia.d.ts +5 -0
- package/dist/utils/multimedia.d.ts.map +1 -1
- package/dist/utils/parser.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/utils/index.js
CHANGED
|
@@ -361,6 +361,30 @@ var mediaIdValue = (obje, path) => {
|
|
|
361
361
|
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
362
362
|
};
|
|
363
363
|
var resolveObjeMediaId = (obje) => mediaIdValue(obje, "RIN") || mediaIdValue(obje, "_CLON._OID") || mediaIdValue(obje, "_MSER._LKID") || mediaIdValue(obje, "_OID") || mediaIdValue(obje, "_LKID");
|
|
364
|
+
var ANCESTRY_TREE_MEDIA_NAMESPACE = 1093;
|
|
365
|
+
var ANCESTRY_NAMESPACE_IN_URL = /\/namespaces\/(\d+)\/media\//i;
|
|
366
|
+
var parseAncestryNamespaceFromUrl = (url) => {
|
|
367
|
+
if (!url) {
|
|
368
|
+
return void 0;
|
|
369
|
+
}
|
|
370
|
+
const match = url.match(ANCESTRY_NAMESPACE_IN_URL);
|
|
371
|
+
const namespace = match?.[1] ? Number(match[1]) : NaN;
|
|
372
|
+
return Number.isFinite(namespace) ? namespace : void 0;
|
|
373
|
+
};
|
|
374
|
+
var isAncestryOriginObje = (obje) => {
|
|
375
|
+
if (!obje) {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
const orig = mediaIdValue(obje, "_ORIG");
|
|
379
|
+
if (orig?.toLowerCase() === "acom") {
|
|
380
|
+
return true;
|
|
381
|
+
}
|
|
382
|
+
const file = mediaIdValue(obje, "FILE") ?? "";
|
|
383
|
+
if (parseAncestryNamespaceFromUrl(file)) {
|
|
384
|
+
return true;
|
|
385
|
+
}
|
|
386
|
+
return Boolean(resolveObjeMediaId(obje) && !file.trim());
|
|
387
|
+
};
|
|
364
388
|
var ANCESTRY_MEDIA_RETRIEVAL_PREFIX = "https://www.ancestry.com/api/media/retrieval/v2/image";
|
|
365
389
|
var ANCESTRY_MEDIA_QUERY = "client=trees-mediaservice&imageQuality=hq";
|
|
366
390
|
var ancestryMediaPath = (namespace, imgId) => `/namespaces/${namespace}/media/${imgId}?${ANCESTRY_MEDIA_QUERY}`;
|
|
@@ -1154,8 +1178,25 @@ var Common = class _Common {
|
|
|
1154
1178
|
getHeadRecord() {
|
|
1155
1179
|
return get(this, "HEAD") || get(this.getGedcom(), "HEAD");
|
|
1156
1180
|
}
|
|
1181
|
+
unwrapHeadRecord(node) {
|
|
1182
|
+
if (!node) {
|
|
1183
|
+
return void 0;
|
|
1184
|
+
}
|
|
1185
|
+
const common = node instanceof List ? node.index(0) : node;
|
|
1186
|
+
if (!common || typeof common.get !== "function") {
|
|
1187
|
+
return void 0;
|
|
1188
|
+
}
|
|
1189
|
+
const nested = common.get("HEAD");
|
|
1190
|
+
if (nested instanceof List) {
|
|
1191
|
+
return nested.index(0) ?? common;
|
|
1192
|
+
}
|
|
1193
|
+
if (nested instanceof _Common) {
|
|
1194
|
+
return nested;
|
|
1195
|
+
}
|
|
1196
|
+
return common;
|
|
1197
|
+
}
|
|
1157
1198
|
getOriginalHeadRecord() {
|
|
1158
|
-
return get(this, ORIG_HEAD_TAG) || get(this.getGedcom(), ORIG_HEAD_TAG) || get(this.getHeadRecord(), ORIG_HEAD_TAG);
|
|
1199
|
+
return this.unwrapHeadRecord(get(this, ORIG_HEAD_TAG)) || this.unwrapHeadRecord(get(this.getGedcom(), ORIG_HEAD_TAG)) || this.unwrapHeadRecord(get(this.getHeadRecord(), ORIG_HEAD_TAG));
|
|
1159
1200
|
}
|
|
1160
1201
|
getSourceHeads() {
|
|
1161
1202
|
const heads = [this.getOriginalHeadRecord(), this.getHeadRecord()];
|
|
@@ -1163,9 +1204,23 @@ var Common = class _Common {
|
|
|
1163
1204
|
return Boolean(head && heads.indexOf(head) === index);
|
|
1164
1205
|
});
|
|
1165
1206
|
}
|
|
1207
|
+
sourceHeadField(head, path) {
|
|
1208
|
+
const normalized = path.endsWith(".value") ? path.slice(0, -".value".length) : path;
|
|
1209
|
+
const node = head.get(normalized);
|
|
1210
|
+
if (!node) {
|
|
1211
|
+
return void 0;
|
|
1212
|
+
}
|
|
1213
|
+
if (node instanceof List) {
|
|
1214
|
+
return node.index(0)?.toValue();
|
|
1215
|
+
}
|
|
1216
|
+
if (typeof node.toValue === "function") {
|
|
1217
|
+
return node.toValue();
|
|
1218
|
+
}
|
|
1219
|
+
return void 0;
|
|
1220
|
+
}
|
|
1166
1221
|
getFromSourceHeads(path) {
|
|
1167
1222
|
for (const head of this.getSourceHeads()) {
|
|
1168
|
-
const value =
|
|
1223
|
+
const value = this.sourceHeadField(head, path);
|
|
1169
1224
|
if (value !== void 0 && value !== null && value !== "") {
|
|
1170
1225
|
return value;
|
|
1171
1226
|
}
|
|
@@ -1174,8 +1229,8 @@ var Common = class _Common {
|
|
|
1174
1229
|
}
|
|
1175
1230
|
sourStartsWith(prefix) {
|
|
1176
1231
|
return this.getSourceHeads().some((head) => {
|
|
1177
|
-
const sour =
|
|
1178
|
-
return
|
|
1232
|
+
const sour = this.sourceHeadField(head, "SOUR");
|
|
1233
|
+
return typeof sour === "string" && sour.toLowerCase().startsWith(prefix);
|
|
1179
1234
|
});
|
|
1180
1235
|
}
|
|
1181
1236
|
isGenoPro() {
|
|
@@ -1185,7 +1240,7 @@ var Common = class _Common {
|
|
|
1185
1240
|
return this.sourStartsWith("ahnenblatt");
|
|
1186
1241
|
}
|
|
1187
1242
|
isGeni() {
|
|
1188
|
-
return this.sourStartsWith("geni");
|
|
1243
|
+
return this.sourStartsWith("geni.com");
|
|
1189
1244
|
}
|
|
1190
1245
|
isAncestry() {
|
|
1191
1246
|
return this.sourStartsWith("ancestry");
|
|
@@ -1193,6 +1248,51 @@ var Common = class _Common {
|
|
|
1193
1248
|
isMyHeritage() {
|
|
1194
1249
|
return this.sourStartsWith("myheritage");
|
|
1195
1250
|
}
|
|
1251
|
+
/**
|
|
1252
|
+
* GEDCOM root for Ancestry media helpers.
|
|
1253
|
+
* `this._gedcom` when called on a child record; `this` when called on the file root.
|
|
1254
|
+
*
|
|
1255
|
+
* Cannot use `instanceof GedCom`: `GedComType` is a type alias (erased at runtime),
|
|
1256
|
+
* and importing the `GedCom` class here would cycle (`GedCom extends Common`).
|
|
1257
|
+
* The root is the only Common with an `objes()` method.
|
|
1258
|
+
*/
|
|
1259
|
+
hostGedcom() {
|
|
1260
|
+
const linked = this.getGedcom();
|
|
1261
|
+
if (linked) {
|
|
1262
|
+
return linked;
|
|
1263
|
+
}
|
|
1264
|
+
if ("objes" in this && typeof this.objes === "function") {
|
|
1265
|
+
return this;
|
|
1266
|
+
}
|
|
1267
|
+
return void 0;
|
|
1268
|
+
}
|
|
1269
|
+
/** True when the file still has Ancestry tree media (`_ORIG acom`, `_OID`, retrieval URL). */
|
|
1270
|
+
hasAncestryOriginMedia() {
|
|
1271
|
+
const objes = this.hostGedcom()?.objes?.();
|
|
1272
|
+
return objes?.values().some((obje) => isAncestryOriginObje(obje)) ?? false;
|
|
1273
|
+
}
|
|
1274
|
+
/**
|
|
1275
|
+
* Namespace for Ancestry tree photos. Prefer a `namespaces/{id}` FILE URL
|
|
1276
|
+
* (TreeViz GEDCOM 7 / GEDZIP export), otherwise 1093 for member-tree media.
|
|
1277
|
+
*/
|
|
1278
|
+
getAncestryMediaNamespace() {
|
|
1279
|
+
const objes = this.hostGedcom()?.objes?.();
|
|
1280
|
+
if (objes) {
|
|
1281
|
+
for (const obje of objes.values()) {
|
|
1282
|
+
const file = obje?.get("FILE")?.toValue();
|
|
1283
|
+
const fromUrl = parseAncestryNamespaceFromUrl(
|
|
1284
|
+
typeof file === "string" ? file : void 0
|
|
1285
|
+
);
|
|
1286
|
+
if (fromUrl) {
|
|
1287
|
+
return fromUrl;
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
if (this.isAncestry() || this.hasAncestryOriginMedia()) {
|
|
1292
|
+
return ANCESTRY_TREE_MEDIA_NAMESPACE;
|
|
1293
|
+
}
|
|
1294
|
+
return void 0;
|
|
1295
|
+
}
|
|
1196
1296
|
/**
|
|
1197
1297
|
* Get the source type as a string (for prefixing tree IDs and names)
|
|
1198
1298
|
* Returns the detected source type or undefined if unknown
|
|
@@ -1209,13 +1309,13 @@ var Common = class _Common {
|
|
|
1209
1309
|
}
|
|
1210
1310
|
isFamilySearch() {
|
|
1211
1311
|
return this.getSourceHeads().some((head) => {
|
|
1212
|
-
const sourName =
|
|
1312
|
+
const sourName = this.sourceHeadField(head, "SOUR.NAME");
|
|
1213
1313
|
return sourName === "FamilySearch API";
|
|
1214
1314
|
});
|
|
1215
1315
|
}
|
|
1216
1316
|
isGNO2GED() {
|
|
1217
1317
|
return this.getSourceHeads().some((head) => {
|
|
1218
|
-
const sour =
|
|
1318
|
+
const sour = this.sourceHeadField(head, "SOUR");
|
|
1219
1319
|
return sour === "GNO2GED";
|
|
1220
1320
|
});
|
|
1221
1321
|
}
|
|
@@ -1260,8 +1360,7 @@ var Common = class _Common {
|
|
|
1260
1360
|
return this.getFromSourceHeads("SOUR._TREE.value") || (get(this, "HEAD.SOUR._TREE.value") || get(this.getGedcom(), "HEAD.SOUR._TREE.value"));
|
|
1261
1361
|
}
|
|
1262
1362
|
getMyHeritageTreeName() {
|
|
1263
|
-
const
|
|
1264
|
-
const treeDetails = get(this, path) || get(this.getGedcom(), path);
|
|
1363
|
+
const treeDetails = this.getFromSourceHeads("FILE.value") || (get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value"));
|
|
1265
1364
|
return treeDetails?.match(
|
|
1266
1365
|
/Exported by MyHeritage.com from (?<tree>.+) in.+$/
|
|
1267
1366
|
)?.groups?.tree;
|
|
@@ -1278,7 +1377,7 @@ var Common = class _Common {
|
|
|
1278
1377
|
if (treeName) {
|
|
1279
1378
|
return treeName;
|
|
1280
1379
|
}
|
|
1281
|
-
const fileName = get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
|
|
1380
|
+
const fileName = this.getFromSourceHeads("FILE.value") || get(this, "HEAD.FILE.value") || get(this.getGedcom(), "HEAD.FILE.value");
|
|
1282
1381
|
return fileName || "FamilySearch Import";
|
|
1283
1382
|
}
|
|
1284
1383
|
getAhnenblattTreeId() {
|
|
@@ -2873,6 +2972,45 @@ var implemented = (type, ...args) => {
|
|
|
2873
2972
|
var notImplemented = (type, ...args) => {
|
|
2874
2973
|
console.error(`[Not Implemented] ${type}`, ...args);
|
|
2875
2974
|
};
|
|
2975
|
+
|
|
2976
|
+
// src/utils/multimedia.ts
|
|
2977
|
+
var inferMediaForm = (file, fallback = "bin") => {
|
|
2978
|
+
const withoutQuery = file.split("?")[0] || file;
|
|
2979
|
+
const ext = getFileExtension(withoutQuery);
|
|
2980
|
+
if (ext) {
|
|
2981
|
+
return ext.toLowerCase() === "jpeg" ? "jpg" : ext.toLowerCase();
|
|
2982
|
+
}
|
|
2983
|
+
return fallback;
|
|
2984
|
+
};
|
|
2985
|
+
var mergeMediaLists = (...lists) => {
|
|
2986
|
+
const merged = {};
|
|
2987
|
+
for (const list of lists) {
|
|
2988
|
+
if (!list) continue;
|
|
2989
|
+
Object.assign(merged, list);
|
|
2990
|
+
}
|
|
2991
|
+
return merged;
|
|
2992
|
+
};
|
|
2993
|
+
var mergeMediaListsByObjeKey = (...lists) => {
|
|
2994
|
+
const merged = {};
|
|
2995
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2996
|
+
for (const list of lists) {
|
|
2997
|
+
if (!list) {
|
|
2998
|
+
continue;
|
|
2999
|
+
}
|
|
3000
|
+
for (const [id, item] of Object.entries(list)) {
|
|
3001
|
+
const objeKey = item.key ? String(item.key) : "";
|
|
3002
|
+
if (objeKey && seen.has(objeKey)) {
|
|
3003
|
+
continue;
|
|
3004
|
+
}
|
|
3005
|
+
merged[id] = item;
|
|
3006
|
+
if (objeKey) {
|
|
3007
|
+
seen.add(objeKey);
|
|
3008
|
+
}
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
return merged;
|
|
3012
|
+
};
|
|
3013
|
+
var isObjePointer = (value) => typeof value === "string" && /^@O\d+@$/.test(value);
|
|
2876
3014
|
var uniqueItemsCache = /* @__PURE__ */ new WeakMap();
|
|
2877
3015
|
var setNestedGroup = (obj, key, value, uniqueCounting = true) => {
|
|
2878
3016
|
const parts = Array.isArray(key) ? key : key.split(/,\s*/);
|
|
@@ -3651,10 +3789,12 @@ var relativesOnLevelCache = relativesCache("relativesOnLevelCache");
|
|
|
3651
3789
|
var relativesOnDegreeCache = relativesCache("relativesOnDegreeCache");
|
|
3652
3790
|
var Indi = class extends Common {
|
|
3653
3791
|
toName() {
|
|
3654
|
-
|
|
3792
|
+
const name = this.get("NAME");
|
|
3793
|
+
const value = name?.index(0)?.toValue() ?? name?.toValue();
|
|
3794
|
+
return typeof value === "string" ? value : void 0;
|
|
3655
3795
|
}
|
|
3656
3796
|
toNaturalName() {
|
|
3657
|
-
return this.
|
|
3797
|
+
return this.toName()?.replaceAll("/", "");
|
|
3658
3798
|
}
|
|
3659
3799
|
toList() {
|
|
3660
3800
|
return new Individuals().concat(
|
|
@@ -4137,7 +4277,10 @@ var Indi = class extends Common {
|
|
|
4137
4277
|
return result;
|
|
4138
4278
|
}
|
|
4139
4279
|
ancestryLink() {
|
|
4140
|
-
|
|
4280
|
+
let www = this.getFromSourceHeads("SOUR.CORP.WWW.value") || this._gedcom?.HEAD?.SOUR?.CORP?.WWW?.value;
|
|
4281
|
+
if (!www || /treeviz/i.test(String(www))) {
|
|
4282
|
+
www = "www.ancestry.com";
|
|
4283
|
+
}
|
|
4141
4284
|
const tree = this.getAncestryTreeId();
|
|
4142
4285
|
if (this.id) {
|
|
4143
4286
|
return `https://${www}/family-tree/person/tree/${tree}/person/${this.id.replace(
|
|
@@ -4149,14 +4292,15 @@ var Indi = class extends Common {
|
|
|
4149
4292
|
async ancestryMedia(namespace) {
|
|
4150
4293
|
const list = {};
|
|
4151
4294
|
const objeList = this.get("OBJE")?.toList().copy();
|
|
4152
|
-
|
|
4295
|
+
this.getFromSourceHeads("SOUR.CORP.WWW.value") || this._gedcom?.HEAD?.SOUR?.CORP?.WWW?.value;
|
|
4153
4296
|
const tree = this.getAncestryTreeId();
|
|
4297
|
+
const usedNamespace = namespace || this.getAncestryMediaNamespace() || ANCESTRY_TREE_MEDIA_NAMESPACE;
|
|
4154
4298
|
if (objeList) {
|
|
4155
4299
|
await Promise.all(
|
|
4156
4300
|
objeList.map(async (objeRef) => {
|
|
4157
4301
|
const key = objeXrefKey(objeRef, 0);
|
|
4158
4302
|
const obje = objeRef?.standardizeMedia(
|
|
4159
|
-
|
|
4303
|
+
usedNamespace,
|
|
4160
4304
|
true,
|
|
4161
4305
|
ancestryMediaFileUrl
|
|
4162
4306
|
);
|
|
@@ -4168,27 +4312,9 @@ var Indi = class extends Common {
|
|
|
4168
4312
|
const type = resolveObjeForm(obje) ?? (url ? getFileExtension(url) : void 0) ?? "raw";
|
|
4169
4313
|
let imgId = media;
|
|
4170
4314
|
const hasEmbeddedOrLocalFile = !!url && (url.startsWith("data:") || url.startsWith("blob:") || !/^https?:\/\//i.test(url));
|
|
4171
|
-
if (!hasEmbeddedOrLocalFile && (!www || !tree || !this.id)) {
|
|
4172
|
-
return;
|
|
4173
|
-
}
|
|
4174
4315
|
if (!this.id) {
|
|
4175
4316
|
return;
|
|
4176
4317
|
}
|
|
4177
|
-
if (!namespace && !url) {
|
|
4178
|
-
try {
|
|
4179
|
-
if (media) {
|
|
4180
|
-
const mediaDetailsResponse = await fetch(
|
|
4181
|
-
`https://www.ancestry.com/api/media/viewer/v2/trees/${tree}/media?id=${media}`
|
|
4182
|
-
);
|
|
4183
|
-
const mediaDetails = await mediaDetailsResponse.json();
|
|
4184
|
-
if (mediaDetails.url) {
|
|
4185
|
-
url = `${mediaDetails.url}&imageQuality=hq`;
|
|
4186
|
-
}
|
|
4187
|
-
}
|
|
4188
|
-
} catch (_e) {
|
|
4189
|
-
}
|
|
4190
|
-
url = url || `https://${www}/mediaui-viewer/tree/${tree}/media/${media}`;
|
|
4191
|
-
}
|
|
4192
4318
|
if (!imgId && hasEmbeddedOrLocalFile && url) {
|
|
4193
4319
|
imgId = typeof media === "string" && media || `local-${String(key).replace(/[@]/g, "")}-${getFileExtension(url) || "bin"}`;
|
|
4194
4320
|
}
|
|
@@ -4213,14 +4339,25 @@ var Indi = class extends Common {
|
|
|
4213
4339
|
}
|
|
4214
4340
|
return list;
|
|
4215
4341
|
}
|
|
4216
|
-
myheritageLink(poolId = 0) {
|
|
4217
|
-
|
|
4342
|
+
myheritageLink(poolId = 0, treeToken) {
|
|
4343
|
+
let www = (this.getFromSourceHeads("SOUR.CORP.value") || this._gedcom?.HEAD?.SOUR?.CORP?.value)?.toLowerCase().replace(/^www\./gi, "");
|
|
4344
|
+
if (!www || /treeviz/i.test(www)) {
|
|
4345
|
+
www = "myheritage.com";
|
|
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
|
+
}
|
|
4218
4358
|
const site = this.getMyHeritageTreeId();
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
if (normalizedFile && this.id) {
|
|
4222
|
-
const id = Number(this.id.replace(/@|I/g, "")) + poolId;
|
|
4223
|
-
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}`;
|
|
4224
4361
|
}
|
|
4225
4362
|
}
|
|
4226
4363
|
myheritageMedia() {
|
|
@@ -4269,6 +4406,14 @@ var Indi = class extends Common {
|
|
|
4269
4406
|
});
|
|
4270
4407
|
return list;
|
|
4271
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
|
+
}
|
|
4272
4417
|
familySearchLink() {
|
|
4273
4418
|
const wwwTags = this.get("WWW")?.toList();
|
|
4274
4419
|
const wwwTag = wwwTags?.find((wwwTag2) => {
|
|
@@ -4437,16 +4582,26 @@ var Indi = class extends Common {
|
|
|
4437
4582
|
return list;
|
|
4438
4583
|
}
|
|
4439
4584
|
async multimedia(namespace) {
|
|
4440
|
-
|
|
4441
|
-
|
|
4585
|
+
const lists = [];
|
|
4586
|
+
const ownObjes = this.get("OBJE")?.toList()?.values() ?? [];
|
|
4587
|
+
const ownAncestryMedia = ownObjes.some(
|
|
4588
|
+
(obje) => !!obje && (isAncestryOriginObje(obje) || isAncestryOriginObje(obje.ref))
|
|
4589
|
+
);
|
|
4590
|
+
if (this.isAncestry() || ownAncestryMedia) {
|
|
4591
|
+
lists.push(
|
|
4592
|
+
await this.ancestryMedia(
|
|
4593
|
+
namespace || this.getAncestryMediaNamespace()
|
|
4594
|
+
)
|
|
4595
|
+
);
|
|
4442
4596
|
}
|
|
4443
4597
|
if (this?.isMyHeritage()) {
|
|
4444
|
-
|
|
4598
|
+
lists.push(this.myheritageMedia());
|
|
4445
4599
|
}
|
|
4446
4600
|
if (this?.isGeni()) {
|
|
4447
|
-
|
|
4601
|
+
lists.push(this.geniMedia());
|
|
4448
4602
|
}
|
|
4449
|
-
|
|
4603
|
+
lists.push(this.universalMedia());
|
|
4604
|
+
return mergeMediaListsByObjeKey(...lists);
|
|
4450
4605
|
}
|
|
4451
4606
|
async getProfilePicture(namespace, onlyPrimary = true) {
|
|
4452
4607
|
if (!this.id) {
|
|
@@ -4539,12 +4694,15 @@ var Indi = class extends Common {
|
|
|
4539
4694
|
);
|
|
4540
4695
|
return void 0;
|
|
4541
4696
|
}
|
|
4542
|
-
link(poolId) {
|
|
4697
|
+
link(poolId, treeToken) {
|
|
4543
4698
|
if (this?.isAncestry()) {
|
|
4544
4699
|
return this.ancestryLink();
|
|
4545
4700
|
}
|
|
4546
4701
|
if (this?.isMyHeritage()) {
|
|
4547
|
-
return this.myheritageLink(poolId);
|
|
4702
|
+
return this.myheritageLink(poolId, treeToken);
|
|
4703
|
+
}
|
|
4704
|
+
if (this?.isGeni()) {
|
|
4705
|
+
return this.geniLink();
|
|
4548
4706
|
}
|
|
4549
4707
|
if (this?.isFamilySearch()) {
|
|
4550
4708
|
return this.familySearchLink();
|
|
@@ -6304,11 +6462,28 @@ var KinshipTranslatorBasic = class {
|
|
|
6304
6462
|
// src/kinship-translator/patterns.hu.ts
|
|
6305
6463
|
var parentRelationsHu = {
|
|
6306
6464
|
step: "mostoha",
|
|
6307
|
-
foster: "nevelt",
|
|
6465
|
+
foster: { ancestor: "nevel\u0151", other: "nevelt" },
|
|
6308
6466
|
birth: "v\xE9rszerinti",
|
|
6309
6467
|
biological: "v\xE9rszerinti",
|
|
6310
|
-
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;
|
|
6311
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("|");
|
|
6312
6487
|
var nominativus = {
|
|
6313
6488
|
apa: { nominativus: "apa", dativus: "apj\xE1nak", possessivus: "apja" },
|
|
6314
6489
|
anya: { nominativus: "anya", dativus: "anyj\xE1nak", possessivus: "anyja" },
|
|
@@ -6386,15 +6561,9 @@ var casesHu = {
|
|
|
6386
6561
|
var InLawsHu = {
|
|
6387
6562
|
"gyermek feles\xE9ge": "meny",
|
|
6388
6563
|
"gyermek f\xE9rje": "v\u0151",
|
|
6389
|
-
[`(f\xE9rj|feles\xE9g) (?<mod1>(${
|
|
6390
|
-
|
|
6391
|
-
)}) )?
|
|
6392
|
-
[`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
|
|
6393
|
-
"|"
|
|
6394
|
-
)}) )?apja`]: "ap\xF3s",
|
|
6395
|
-
[`(f\xE9rj|feles\xE9g) (?<mod1>(${Object.values(parentRelationsHu).join(
|
|
6396
|
-
"|"
|
|
6397
|
-
)}) )?(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) => {
|
|
6398
6567
|
if (indi?.isMale()) {
|
|
6399
6568
|
return "s\xF3gor";
|
|
6400
6569
|
}
|
|
@@ -6671,7 +6840,12 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
6671
6840
|
if (!relation || !this.pathN?.relation) {
|
|
6672
6841
|
return relation ?? "";
|
|
6673
6842
|
}
|
|
6674
|
-
|
|
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}`;
|
|
6675
6849
|
}
|
|
6676
6850
|
};
|
|
6677
6851
|
|
|
@@ -6871,6 +7045,10 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6871
7045
|
if (!relation || !this.pathN?.relation) {
|
|
6872
7046
|
return relation ?? "";
|
|
6873
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
|
+
}
|
|
6874
7052
|
return `${this.pathN.relation} ${relation}`;
|
|
6875
7053
|
}
|
|
6876
7054
|
};
|
|
@@ -8029,6 +8207,39 @@ var lineal = (level, sex, kind) => {
|
|
|
8029
8207
|
}
|
|
8030
8208
|
return `${L - 1}\u4E16\u306E\u5B6B`;
|
|
8031
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
|
+
};
|
|
8032
8243
|
var cousinPlain = (degree) => {
|
|
8033
8244
|
if (degree <= 1) {
|
|
8034
8245
|
return "\u3044\u3068\u3053";
|
|
@@ -8188,10 +8399,10 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
8188
8399
|
return `\u7D99${relation}`;
|
|
8189
8400
|
}
|
|
8190
8401
|
if (this.pathN.relation === "adopted") {
|
|
8191
|
-
return
|
|
8402
|
+
return adoptedRelation(relation);
|
|
8192
8403
|
}
|
|
8193
8404
|
if (this.pathN.relation === "foster") {
|
|
8194
|
-
return
|
|
8405
|
+
return fosterRelation(relation);
|
|
8195
8406
|
}
|
|
8196
8407
|
return relation;
|
|
8197
8408
|
}
|
|
@@ -9199,7 +9410,8 @@ var extractGedzip = async (data) => {
|
|
|
9199
9410
|
if (!preferred) {
|
|
9200
9411
|
throw new Error("No .ged file found in the archive.");
|
|
9201
9412
|
}
|
|
9202
|
-
const
|
|
9413
|
+
const gedcomBytes = await preferred.async("uint8array");
|
|
9414
|
+
const gedcomText = new TextDecoder("utf-8").decode(gedcomBytes);
|
|
9203
9415
|
const mediaEntries = [];
|
|
9204
9416
|
for (const entry of entries) {
|
|
9205
9417
|
const path = normalizeZipPath(entry.name);
|
|
@@ -9773,7 +9985,7 @@ var collectExtensionTagsFrom = (node, into = /* @__PURE__ */ new Set()) => {
|
|
|
9773
9985
|
// package.json
|
|
9774
9986
|
var package_default = {
|
|
9775
9987
|
name: "@treeviz/gedcom-parser",
|
|
9776
|
-
version: "2.1.
|
|
9988
|
+
version: "2.1.22"};
|
|
9777
9989
|
|
|
9778
9990
|
// src/utils/get-product-details.ts
|
|
9779
9991
|
var isDevelopment = () => {
|
|
@@ -9782,25 +9994,6 @@ var isDevelopment = () => {
|
|
|
9782
9994
|
var getVersion = () => package_default.version;
|
|
9783
9995
|
var getName = () => package_default.name;
|
|
9784
9996
|
|
|
9785
|
-
// src/utils/multimedia.ts
|
|
9786
|
-
var inferMediaForm = (file, fallback = "bin") => {
|
|
9787
|
-
const withoutQuery = file.split("?")[0] || file;
|
|
9788
|
-
const ext = getFileExtension(withoutQuery);
|
|
9789
|
-
if (ext) {
|
|
9790
|
-
return ext.toLowerCase() === "jpeg" ? "jpg" : ext.toLowerCase();
|
|
9791
|
-
}
|
|
9792
|
-
return fallback;
|
|
9793
|
-
};
|
|
9794
|
-
var mergeMediaLists = (...lists) => {
|
|
9795
|
-
const merged = {};
|
|
9796
|
-
for (const list of lists) {
|
|
9797
|
-
if (!list) continue;
|
|
9798
|
-
Object.assign(merged, list);
|
|
9799
|
-
}
|
|
9800
|
-
return merged;
|
|
9801
|
-
};
|
|
9802
|
-
var isObjePointer = (value) => typeof value === "string" && /^@O\d+@$/.test(value);
|
|
9803
|
-
|
|
9804
9997
|
// src/classes/note.ts
|
|
9805
9998
|
var CommonNote = class extends Common {
|
|
9806
9999
|
constructor(gedcom, id, main, parent) {
|
|
@@ -9951,6 +10144,10 @@ var Obje = class extends Common {
|
|
|
9951
10144
|
if (lkidNode && !newObject.get("_LKID")) {
|
|
9952
10145
|
newObject.set("_LKID", lkidNode);
|
|
9953
10146
|
}
|
|
10147
|
+
const origNode = this.get("_ORIG");
|
|
10148
|
+
if (origNode && !newObject.get("_ORIG")) {
|
|
10149
|
+
newObject.set("_ORIG", origNode);
|
|
10150
|
+
}
|
|
9954
10151
|
if (override) {
|
|
9955
10152
|
this.remove("FILE");
|
|
9956
10153
|
this.remove("FORM");
|
|
@@ -10938,6 +11135,7 @@ var GedcomTree = {
|
|
|
10938
11135
|
return this.parseHierarchy(content, options);
|
|
10939
11136
|
},
|
|
10940
11137
|
parseHierarchy: function(content, options) {
|
|
11138
|
+
content = content.replace(/^\uFEFF+/, "");
|
|
10941
11139
|
const { settings, filename = "" } = options ?? {};
|
|
10942
11140
|
const { linkedPersons = "skip", linkingKey } = settings ?? {};
|
|
10943
11141
|
const gedcom = createGedCom();
|
|
@@ -11451,4 +11649,4 @@ var hydrateFromContentAsync = async (content, options) => {
|
|
|
11451
11649
|
return hydrateFromContent(content, options);
|
|
11452
11650
|
};
|
|
11453
11651
|
|
|
11454
|
-
export { ACCEPTED_DATE_FORMATS, ACCEPTED_DATE_FORMATS_REGEX, ANCESTRY_MEDIA_RETRIEVAL_PREFIX, DEFAULT_GEDCOM_EXPORT_VERSION, GEDCOM7_CALENDARS, GEDCOM7_PEDI_VALUES, GEDCOM7_RESN_VALUES, GEDCOM7_ROLE_VALUES, GEDCOM7_SEX_VALUES, GEDCOM_EXPORT_VERSIONS, GEDCOM_TRAILER_TAG, GEDZIP_EXTENSION, GEDZIP_GEDCOM_ENTRY, GEDZIP_MIME, parser_default as GedcomTree, PEDIGREE_VALUES, PlaceType, STRUCTURAL_FORMAT, STRUCTURAL_VERSION, TREEVIZ_EXTENSION_BASE_URI, TREEVIZ_EXTENSION_URIS, addFamilyFact, addIndividualFact, addNonEvent, ancestryMediaFileUrl, appendGedcomTrailer, applyGedcom7DatePhrases, applyGedcom7Enumerations, applyGedcom7RecordMetadata, attachChildToFamily, attachSpouseToFamily, buildGedzip, buildGedzipBlob, bytesToDataUrl, cacheDiscoveredPath, canAttachAsSpouse, collectExtensionTagsFrom, commonDateFormatter, consolidateChildIntoFamily, coupleKeyForFam, create, createEmptyGedcom, createGedcomUid, dateFormatter, deleteIndividual, downloadGedzipMedia, ensureExtensionSchema, extractGedzip, extractGedzipGedcom, extractSeparationYears, extractSplitPoints, familyHasChild, familyHasParent, findDegenerateFamiliesForIndi, findDuplicateCoupleFamiliesForIndi, findMatchingRangeForSplitRange, findReusableParentChildFamily, firstPointerId, formatGedcom7Timestamp, fromObject, fromObjectAsync, fromTuple, generateSplitRanges, getAllProp, getExtensionSchema, getFamilyWith, getFileExtension, getName, getPlaceParts, getPlaces, getRawSize, getVersion, hungarianOrdinalize, hydrateFromContent, hydrateFromContentAsync, implemented, inRange, inferMediaForm, initializeCache, isDegenerateFamily, isDevelopment, isGedcom7, isGedcomTrailerLine, isGedcomTrailerTag, isGedzipContainer, isImageFormat, isIntersectedRange, isObjePointer, isRangeContained, isRemoteOrEmbeddedMediaUrl, isStructuralEnvelope, makePointer, marriageDateFormatter, mergeDuplicateCoupleFamilies, mergeMediaLists, nameFormatter, nextRecordId, normalizeGedcomVersion, notImplemented, noteDateFormatter, objeNoteValue, objeXrefKey, ordinalize, parseGedcom7CalendarPrefix, parseRangeBounds, parseStructuralEnvelope, pathCache, placeTranslator, pointerIds, profilePictureCache, pruneEmptyFamilies, pruneFamiliesByIds, registerExtensionTag, relativesCache, remountGedzipMediaAsDataUrls, removePointerByValue, resetRelativesCache, resolveLocalMediaUrl, resolveMediaContent, resolveObjeForm, resolveObjeMediaId, rewriteGedcomFilePaths, serializeStructural, setCauseOfDeath, setChildPedigree, setDeceased, setFamilyMarriage, setLocalMediaResolver, setMediaContentResolver, setNestedGroup, splitOverlappingRanges, splitRange, spouseTagFor, toGedcomPedigree, unlinkRelative, updateFactRecord, withGedcom7Calendar };
|
|
11652
|
+
export { ACCEPTED_DATE_FORMATS, ACCEPTED_DATE_FORMATS_REGEX, ANCESTRY_MEDIA_RETRIEVAL_PREFIX, ANCESTRY_TREE_MEDIA_NAMESPACE, DEFAULT_GEDCOM_EXPORT_VERSION, GEDCOM7_CALENDARS, GEDCOM7_PEDI_VALUES, GEDCOM7_RESN_VALUES, GEDCOM7_ROLE_VALUES, GEDCOM7_SEX_VALUES, GEDCOM_EXPORT_VERSIONS, GEDCOM_TRAILER_TAG, GEDZIP_EXTENSION, GEDZIP_GEDCOM_ENTRY, GEDZIP_MIME, parser_default as GedcomTree, PEDIGREE_VALUES, PlaceType, STRUCTURAL_FORMAT, STRUCTURAL_VERSION, TREEVIZ_EXTENSION_BASE_URI, TREEVIZ_EXTENSION_URIS, addFamilyFact, addIndividualFact, addNonEvent, ancestryMediaFileUrl, appendGedcomTrailer, applyGedcom7DatePhrases, applyGedcom7Enumerations, applyGedcom7RecordMetadata, attachChildToFamily, attachSpouseToFamily, buildGedzip, buildGedzipBlob, bytesToDataUrl, cacheDiscoveredPath, canAttachAsSpouse, collectExtensionTagsFrom, commonDateFormatter, consolidateChildIntoFamily, coupleKeyForFam, create, createEmptyGedcom, createGedcomUid, dateFormatter, deleteIndividual, downloadGedzipMedia, ensureExtensionSchema, extractGedzip, extractGedzipGedcom, extractSeparationYears, extractSplitPoints, familyHasChild, familyHasParent, findDegenerateFamiliesForIndi, findDuplicateCoupleFamiliesForIndi, findMatchingRangeForSplitRange, findReusableParentChildFamily, firstPointerId, formatGedcom7Timestamp, fromObject, fromObjectAsync, fromTuple, generateSplitRanges, getAllProp, getExtensionSchema, getFamilyWith, getFileExtension, getName, getPlaceParts, getPlaces, getRawSize, getVersion, hungarianOrdinalize, hydrateFromContent, hydrateFromContentAsync, implemented, inRange, inferMediaForm, initializeCache, isAncestryOriginObje, isDegenerateFamily, isDevelopment, isGedcom7, isGedcomTrailerLine, isGedcomTrailerTag, isGedzipContainer, isImageFormat, isIntersectedRange, isObjePointer, isRangeContained, isRemoteOrEmbeddedMediaUrl, isStructuralEnvelope, makePointer, marriageDateFormatter, mergeDuplicateCoupleFamilies, mergeMediaLists, mergeMediaListsByObjeKey, nameFormatter, nextRecordId, normalizeGedcomVersion, notImplemented, noteDateFormatter, objeNoteValue, objeXrefKey, ordinalize, parseAncestryNamespaceFromUrl, parseGedcom7CalendarPrefix, parseRangeBounds, parseStructuralEnvelope, pathCache, placeTranslator, pointerIds, profilePictureCache, pruneEmptyFamilies, pruneFamiliesByIds, registerExtensionTag, relativesCache, remountGedzipMediaAsDataUrls, removePointerByValue, resetRelativesCache, resolveLocalMediaUrl, resolveMediaContent, resolveObjeForm, resolveObjeMediaId, rewriteGedcomFilePaths, serializeStructural, setCauseOfDeath, setChildPedigree, setDeceased, setFamilyMarriage, setLocalMediaResolver, setMediaContentResolver, setNestedGroup, splitOverlappingRanges, splitRange, spouseTagFor, toGedcomPedigree, unlinkRelative, updateFactRecord, withGedcom7Calendar };
|
|
@@ -24,6 +24,16 @@ type ObjeGetter = {
|
|
|
24
24
|
* have `_OID` without `_MSER._LKID`; both are the UUID used in media URLs.
|
|
25
25
|
*/
|
|
26
26
|
export declare const resolveObjeMediaId: (obje?: ObjeGetter) => string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Ancestry member-tree photos (user uploads) always live in media
|
|
29
|
+
* namespace 1093. Ancestry GEDCOM exports do not store this id — only
|
|
30
|
+
* `_OID` / `_MSER._LKID` UUIDs and `_ORIG acom`. Other namespaces
|
|
31
|
+
* (e.g. 7163) are historical record databases, not tree media.
|
|
32
|
+
*/
|
|
33
|
+
export declare const ANCESTRY_TREE_MEDIA_NAMESPACE = 1093;
|
|
34
|
+
export declare const parseAncestryNamespaceFromUrl: (url?: string) => number | undefined;
|
|
35
|
+
/** Tree-media object from Ancestry: `_ORIG acom`, empty FILE + UUID, or a retrieval URL. */
|
|
36
|
+
export declare const isAncestryOriginObje: (obje?: ObjeGetter) => boolean;
|
|
27
37
|
/** Ancestry tree media host used by their viewer. */
|
|
28
38
|
export declare const ANCESTRY_MEDIA_RETRIEVAL_PREFIX = "https://www.ancestry.com/api/media/retrieval/v2/image";
|
|
29
39
|
export declare const ancestryMediaFileUrl: (namespace?: string | number, imgId?: string) => string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-utils.d.ts","sourceRoot":"","sources":["../../src/utils/media-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAenD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAyB9C,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,eAAe,GAAI,OAAO;IACtC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;QAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAClE,KAAG,MAAM,GAAG,SAKZ,CAAC;AAEF,KAAK,UAAU,GAAG;IACjB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;QAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAClE,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,UAAU,KAAG,MAAM,GAAG,SAKpC,CAAC;AAE7B,qDAAqD;AACrD,eAAO,MAAM,+BAA+B,0DACY,CAAC;AAMzD,eAAO,MAAM,oBAAoB,GAChC,YAAY,MAAM,GAAG,MAAM,EAC3B,QAAQ,MAAM,KACZ,MAAM,GAAG,SAKX,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,WAAW,GACvB,OAAO;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,EAC/C,WAAU,MAAM,GAAG,MAAU,KAC3B,MAYF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MACkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"media-utils.d.ts","sourceRoot":"","sources":["../../src/utils/media-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAenD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAyB9C,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,eAAe,GAAI,OAAO;IACtC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;QAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAClE,KAAG,MAAM,GAAG,SAKZ,CAAC;AAEF,KAAK,UAAU,GAAG;IACjB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;QAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAClE,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,UAAU,KAAG,MAAM,GAAG,SAKpC,CAAC;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAIlD,eAAO,MAAM,6BAA6B,GACzC,MAAM,MAAM,KACV,MAAM,GAAG,SAOX,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,GAAI,OAAO,UAAU,KAAG,OAaxD,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,+BAA+B,0DACY,CAAC;AAMzD,eAAO,MAAM,oBAAoB,GAChC,YAAY,MAAM,GAAG,MAAM,EAC3B,QAAQ,MAAM,KACZ,MAAM,GAAG,SAKX,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,WAAW,GACvB,OAAO;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,EAC/C,WAAU,MAAM,GAAG,MAAU,KAC3B,MAYF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MACkB,CAAC"}
|
|
@@ -34,5 +34,10 @@ export declare const inferMediaForm: (file: string, fallback?: string) => string
|
|
|
34
34
|
* Merge MediaList maps (later entries overwrite same keys).
|
|
35
35
|
*/
|
|
36
36
|
export declare const mergeMediaLists: (...lists: Array<MediaList | undefined>) => MediaList;
|
|
37
|
+
/**
|
|
38
|
+
* Merge media from vendor resolvers and local/GEDZIP FILE payloads.
|
|
39
|
+
* First list wins when the same OBJE xref appears twice.
|
|
40
|
+
*/
|
|
41
|
+
export declare const mergeMediaListsByObjeKey: (...lists: Array<MediaList | undefined>) => MediaList;
|
|
37
42
|
export declare const isObjePointer: (value: unknown) => value is ObjeKey;
|
|
38
43
|
//# sourceMappingURL=multimedia.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multimedia.d.ts","sourceRoot":"","sources":["../../src/utils/multimedia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,MAAM,MAAM,qBAAqB,GAAG;IACnC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,iBAAgB,WAO5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,cAOrE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"multimedia.d.ts","sourceRoot":"","sources":["../../src/utils/multimedia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,MAAM,MAAM,qBAAqB,GAAG;IACnC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,iBAAgB,WAO5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,cAOrE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACpC,GAAG,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,cAoBtC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OACJ,CAAC"}
|
|
@@ -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;;;;
|
|
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.
|
|
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",
|