@treeviz/gedcom-parser 2.1.5 → 2.1.7

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 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/classes/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/classes/common.ts"],"names":[],"mappings":"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"}
@@ -768,6 +768,9 @@ var Common = class _Common {
768
768
  const validKeys = getValidKeys(this);
769
769
  let json = {};
770
770
  validKeys.forEach((key) => {
771
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
772
+ return;
773
+ }
771
774
  if (key === "id" && this.id !== void 0) {
772
775
  json.id = this.id;
773
776
  } else if (key === "_id" && this._id !== void 0) {
@@ -8153,7 +8156,7 @@ var ensureExtensionSchema = (gedcom, extraTags) => {
8153
8156
 
8154
8157
  // package.json
8155
8158
  var package_default = {
8156
- version: "2.1.5"};
8159
+ version: "2.1.7"};
8157
8160
 
8158
8161
  // src/utils/get-product-details.ts
8159
8162
  var getVersion = () => package_default.version;
package/dist/cli/index.js CHANGED
@@ -704,6 +704,9 @@ var Common = class _Common {
704
704
  const validKeys = getValidKeys(this);
705
705
  let json = {};
706
706
  validKeys.forEach((key) => {
707
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
708
+ return;
709
+ }
707
710
  if (key === "id" && this.id !== void 0) {
708
711
  json.id = this.id;
709
712
  } else if (key === "_id" && this._id !== void 0) {
@@ -8149,7 +8152,7 @@ var ensureExtensionSchema = (gedcom, extraTags) => {
8149
8152
 
8150
8153
  // package.json
8151
8154
  var package_default = {
8152
- version: "2.1.5"};
8155
+ version: "2.1.7"};
8153
8156
 
8154
8157
  // src/utils/get-product-details.ts
8155
8158
  var isDevelopment = () => {
@@ -1216,6 +1216,9 @@ var Common = class _Common {
1216
1216
  const validKeys = getValidKeys(this);
1217
1217
  let json = {};
1218
1218
  validKeys.forEach((key) => {
1219
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
1220
+ return;
1221
+ }
1219
1222
  if (key === "id" && this.id !== void 0) {
1220
1223
  json.id = this.id;
1221
1224
  } else if (key === "_id" && this._id !== void 0) {
@@ -1011,6 +1011,9 @@ var Common = class _Common {
1011
1011
  const validKeys = getValidKeys(this);
1012
1012
  let json = {};
1013
1013
  validKeys.forEach((key) => {
1014
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
1015
+ return;
1016
+ }
1014
1017
  if (key === "id" && this.id !== void 0) {
1015
1018
  json.id = this.id;
1016
1019
  } else if (key === "_id" && this._id !== void 0) {
package/dist/index.js CHANGED
@@ -698,6 +698,9 @@ var Common = class _Common {
698
698
  const validKeys = getValidKeys(this);
699
699
  let json = {};
700
700
  validKeys.forEach((key) => {
701
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
702
+ return;
703
+ }
701
704
  if (key === "id" && this.id !== void 0) {
702
705
  json.id = this.id;
703
706
  } else if (key === "_id" && this._id !== void 0) {
@@ -9069,7 +9072,7 @@ var collectExtensionTagsFrom = (node, into = /* @__PURE__ */ new Set()) => {
9069
9072
  // package.json
9070
9073
  var package_default = {
9071
9074
  name: "@treeviz/gedcom-parser",
9072
- version: "2.1.5"};
9075
+ version: "2.1.7"};
9073
9076
 
9074
9077
  // src/utils/get-product-details.ts
9075
9078
  var isDevelopment = () => {
@@ -6,6 +6,11 @@ export interface ConvertOptions {
6
6
  original?: boolean;
7
7
  /** Target GEDCOM spec when serializing. Ignored when `original` is true. */
8
8
  gedcomVersion?: "5.5.1" | "7.0";
9
+ /**
10
+ * When true, omit derived DATE fields (DAY/MONTH/YEAR) for structural
11
+ * persistence (Firebase/IDB). Not for GEDCOM export.
12
+ */
13
+ persist?: boolean;
9
14
  obje?: {
10
15
  standardize?: boolean;
11
16
  override?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/interfaces/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/interfaces/common.ts"],"names":[],"mappings":"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"}
@@ -2514,6 +2514,9 @@ var Common = class _Common {
2514
2514
  const validKeys = getValidKeys(this);
2515
2515
  let json = {};
2516
2516
  validKeys.forEach((key) => {
2517
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
2518
+ return;
2519
+ }
2517
2520
  if (key === "id" && this.id !== void 0) {
2518
2521
  json.id = this.id;
2519
2522
  } else if (key === "_id" && this._id !== void 0) {
@@ -26,6 +26,7 @@ export * from "./ordinalize";
26
26
  export { default as GedcomTree, createEmptyGedcom } from "./parser";
27
27
  export * from "./place-parser";
28
28
  export * from "./place-translator";
29
+ export * from "./structural";
29
30
  export type { PrimitiveRange, Range, SplitResult } from "./range";
30
31
  export * from "./range";
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAInC,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClE,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAI7B,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClE,cAAc,SAAS,CAAC"}
@@ -981,6 +981,9 @@ var Common = class _Common {
981
981
  const validKeys = getValidKeys(this);
982
982
  let json = {};
983
983
  validKeys.forEach((key) => {
984
+ if (options?.persist && (key === "DAY" || key === "MONTH" || key === "YEAR")) {
985
+ return;
986
+ }
984
987
  if (key === "id" && this.id !== void 0) {
985
988
  json.id = this.id;
986
989
  } else if (key === "_id" && this._id !== void 0) {
@@ -8903,7 +8906,7 @@ var collectExtensionTagsFrom = (node, into = /* @__PURE__ */ new Set()) => {
8903
8906
  // package.json
8904
8907
  var package_default = {
8905
8908
  name: "@treeviz/gedcom-parser",
8906
- version: "2.1.5"};
8909
+ version: "2.1.7"};
8907
8910
 
8908
8911
  // src/utils/get-product-details.ts
8909
8912
  var isDevelopment = () => {
@@ -10306,4 +10309,253 @@ var createEmptyGedcom = (options) => {
10306
10309
  return gedcom;
10307
10310
  };
10308
10311
 
10309
- export { ACCEPTED_DATE_FORMATS, ACCEPTED_DATE_FORMATS_REGEX, 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, TREEVIZ_EXTENSION_BASE_URI, TREEVIZ_EXTENSION_URIS, addFamilyFact, addIndividualFact, addNonEvent, 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, fromTuple, generateSplitRanges, getAllProp, getExtensionSchema, getFamilyWith, getFileExtension, getName, getPlaceParts, getPlaces, getRawSize, getVersion, hungarianOrdinalize, implemented, inRange, inferMediaForm, initializeCache, isDegenerateFamily, isDevelopment, isGedcom7, isGedcomTrailerLine, isGedcomTrailerTag, isGedzipContainer, isImageFormat, isIntersectedRange, isObjePointer, isRangeContained, isRemoteOrEmbeddedMediaUrl, makePointer, marriageDateFormatter, mergeDuplicateCoupleFamilies, mergeMediaLists, nameFormatter, nextRecordId, normalizeGedcomVersion, notImplemented, noteDateFormatter, ordinalize, parseGedcom7CalendarPrefix, parseRangeBounds, pathCache, placeTranslator, pointerIds, profilePictureCache, pruneEmptyFamilies, pruneFamiliesByIds, registerExtensionTag, relativesCache, remountGedzipMediaAsDataUrls, removePointerByValue, resetRelativesCache, resolveLocalMediaUrl, resolveMediaContent, resolveObjeForm, rewriteGedcomFilePaths, setCauseOfDeath, setChildPedigree, setDeceased, setFamilyMarriage, setLocalMediaResolver, setMediaContentResolver, setNestedGroup, splitOverlappingRanges, splitRange, spouseTagFor, toGedcomPedigree, unlinkRelative, updateFactRecord, withGedcom7Calendar };
10312
+ // src/utils/structural.ts
10313
+ var STRUCTURAL_FORMAT = "treeviz-structural";
10314
+ var STRUCTURAL_VERSION = 1;
10315
+ var ROOT_SKIP_KEYS = /* @__PURE__ */ new Set(["HEAD"]);
10316
+ var SKIP_KEYS = /* @__PURE__ */ new Set(["id"]);
10317
+ var asArray = (value) => {
10318
+ if (value === void 0 || value === null) {
10319
+ return [];
10320
+ }
10321
+ return Array.isArray(value) ? value : [value];
10322
+ };
10323
+ var isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
10324
+ var isRecordItem = (value) => isPlainObject(value) && typeof value.id === "string";
10325
+ var topLevelRecordTags = (data) => {
10326
+ const found = [];
10327
+ for (const key of Object.keys(data)) {
10328
+ if (ROOT_SKIP_KEYS.has(key)) {
10329
+ continue;
10330
+ }
10331
+ if (asArray(data[key]).some(isRecordItem)) {
10332
+ found.push(key);
10333
+ }
10334
+ }
10335
+ return found;
10336
+ };
10337
+ var clearNodeChildren = (node) => {
10338
+ for (const key of getValidKeys(node)) {
10339
+ if (key === "id" || key === "_id" || key === "value" || key === "_value") {
10340
+ continue;
10341
+ }
10342
+ node.remove(key);
10343
+ }
10344
+ const mutable = node;
10345
+ if ("value" in mutable) {
10346
+ delete mutable.value;
10347
+ }
10348
+ if ("_value" in mutable) {
10349
+ delete mutable._value;
10350
+ }
10351
+ };
10352
+ var isStructuralEnvelope = (content) => {
10353
+ const trimmed = content.trimStart();
10354
+ return trimmed.startsWith("{") && trimmed.includes(`"format":"${STRUCTURAL_FORMAT}"`);
10355
+ };
10356
+ var parseStructuralEnvelope = (content) => {
10357
+ try {
10358
+ const parsed = JSON.parse(content);
10359
+ if (parsed?.format === STRUCTURAL_FORMAT && parsed.v === STRUCTURAL_VERSION && parsed.data && typeof parsed.data === "object") {
10360
+ return parsed;
10361
+ }
10362
+ } catch {
10363
+ }
10364
+ return void 0;
10365
+ };
10366
+ var serializeStructural = (gedcom, options) => {
10367
+ const data = gedcom.toObject(void 0, {
10368
+ ...options,
10369
+ persist: true
10370
+ });
10371
+ const envelope = {
10372
+ v: STRUCTURAL_VERSION,
10373
+ format: STRUCTURAL_FORMAT,
10374
+ data
10375
+ };
10376
+ return JSON.stringify(envelope);
10377
+ };
10378
+ var buildXrefIndex = (data) => {
10379
+ const xrefTypes = /* @__PURE__ */ new Map();
10380
+ for (const tag of topLevelRecordTags(data)) {
10381
+ for (const item of asArray(data[tag])) {
10382
+ if (isRecordItem(item)) {
10383
+ xrefTypes.set(item.id, tag);
10384
+ }
10385
+ }
10386
+ }
10387
+ return xrefTypes;
10388
+ };
10389
+ var applyValue = (node, value, xrefTypes) => {
10390
+ node.value = value;
10391
+ if (isId(value) && xrefTypes.has(value)) {
10392
+ node.refType = xrefTypes.get(value);
10393
+ }
10394
+ };
10395
+ var DERIVED_NAME_PARTS = /* @__PURE__ */ new Set([
10396
+ "GIVN",
10397
+ "SURN",
10398
+ "NSFX",
10399
+ "NICK",
10400
+ "NPFX",
10401
+ "DISPLAY",
10402
+ "FORMAT"
10403
+ ]);
10404
+ var applyProps = (gedcom, node, props, xrefTypes) => {
10405
+ const providedKeys = new Set(Object.keys(props));
10406
+ const entries = Object.entries(props);
10407
+ const ordered = [
10408
+ ...entries.filter(([key]) => key === "value"),
10409
+ ...entries.filter(([key]) => key !== "value")
10410
+ ];
10411
+ ordered.forEach(([key, value]) => {
10412
+ if (SKIP_KEYS.has(key)) {
10413
+ return;
10414
+ }
10415
+ if (key === "value") {
10416
+ if (value === null || value === void 0 || typeof value === "object") {
10417
+ return;
10418
+ }
10419
+ applyValue(node, String(value), xrefTypes);
10420
+ return;
10421
+ }
10422
+ const tag = key;
10423
+ const main = node.main ?? node;
10424
+ const addOne = (childProps) => {
10425
+ if (typeof childProps === "string") {
10426
+ const { prevNode: prevNode2 } = create(gedcom, tag, void 0, {
10427
+ mainNode: main,
10428
+ curNode: node
10429
+ });
10430
+ applyValue(prevNode2, childProps, xrefTypes);
10431
+ node.assign(tag, prevNode2);
10432
+ return;
10433
+ }
10434
+ const { prevNode } = create(gedcom, tag, void 0, {
10435
+ mainNode: main,
10436
+ curNode: node
10437
+ });
10438
+ applyProps(gedcom, prevNode, childProps, xrefTypes);
10439
+ node.assign(tag, prevNode);
10440
+ };
10441
+ if (value === null || value === void 0) {
10442
+ return;
10443
+ }
10444
+ if (Array.isArray(value)) {
10445
+ value.forEach((item) => {
10446
+ if (typeof item === "string") {
10447
+ addOne(item);
10448
+ } else if (isPlainObject(item)) {
10449
+ addOne(item);
10450
+ }
10451
+ });
10452
+ return;
10453
+ }
10454
+ if (typeof value === "string" || typeof value === "number") {
10455
+ addOne(String(value));
10456
+ return;
10457
+ }
10458
+ if (isPlainObject(value)) {
10459
+ const existing = node.get(tag);
10460
+ if (existing && !existing.length) {
10461
+ node.remove(tag);
10462
+ }
10463
+ addOne(value);
10464
+ }
10465
+ });
10466
+ if (providedKeys.has("value")) {
10467
+ for (const derived of DERIVED_NAME_PARTS) {
10468
+ if (!providedKeys.has(derived) && node.get(derived)) {
10469
+ node.remove(derived);
10470
+ }
10471
+ }
10472
+ }
10473
+ };
10474
+ var applyHead = (gedcom, data, xrefTypes) => {
10475
+ const headNode = gedcom.get("HEAD");
10476
+ if (isPlainObject(data.HEAD)) {
10477
+ if (headNode) {
10478
+ clearNodeChildren(headNode);
10479
+ applyProps(gedcom, headNode, data.HEAD, xrefTypes);
10480
+ }
10481
+ return;
10482
+ }
10483
+ if (headNode) {
10484
+ gedcom.remove("HEAD");
10485
+ }
10486
+ };
10487
+ var yieldToMain = () => new Promise((resolve) => {
10488
+ setTimeout(resolve, 0);
10489
+ });
10490
+ var rebuildFromObjectData = (data) => {
10491
+ const gedcom = createEmptyGedcom();
10492
+ const xrefTypes = buildXrefIndex(data);
10493
+ applyHead(gedcom, data, xrefTypes);
10494
+ for (const tag of topLevelRecordTags(data)) {
10495
+ for (const item of asArray(data[tag])) {
10496
+ if (!isRecordItem(item)) {
10497
+ continue;
10498
+ }
10499
+ const id = item.id;
10500
+ const { prevNode } = create(gedcom, tag, id);
10501
+ parser_default.addToList(id, tag, gedcom, prevNode);
10502
+ applyProps(gedcom, prevNode, item, xrefTypes);
10503
+ }
10504
+ }
10505
+ return gedcom;
10506
+ };
10507
+ var fromObject = (data) => rebuildFromObjectData(data);
10508
+ var fromObjectAsync = async (data, options) => {
10509
+ const yieldEvery = options?.yieldEvery ?? 40;
10510
+ const signal = options?.signal;
10511
+ const gedcom = createEmptyGedcom();
10512
+ const xrefTypes = buildXrefIndex(data);
10513
+ applyHead(gedcom, data, xrefTypes);
10514
+ let n = 0;
10515
+ for (const tag of topLevelRecordTags(data)) {
10516
+ for (const item of asArray(data[tag])) {
10517
+ if (signal?.aborted) {
10518
+ throw new DOMException("Aborted", "AbortError");
10519
+ }
10520
+ if (!isRecordItem(item)) {
10521
+ continue;
10522
+ }
10523
+ const id = item.id;
10524
+ const { prevNode } = create(gedcom, tag, id);
10525
+ parser_default.addToList(id, tag, gedcom, prevNode);
10526
+ applyProps(gedcom, prevNode, item, xrefTypes);
10527
+ n += 1;
10528
+ if (n % yieldEvery === 0) {
10529
+ await yieldToMain();
10530
+ }
10531
+ }
10532
+ }
10533
+ return gedcom;
10534
+ };
10535
+ var hydrateFromContent = (content, options) => {
10536
+ const envelope = parseStructuralEnvelope(content);
10537
+ if (envelope) {
10538
+ return fromObject(envelope.data);
10539
+ }
10540
+ const { gedcom } = parser_default.parse(content, options);
10541
+ if (!gedcom) {
10542
+ throw new Error("Unable to parse GEDCOM content");
10543
+ }
10544
+ return gedcom;
10545
+ };
10546
+ var hydrateFromContentAsync = async (content, options) => {
10547
+ await yieldToMain();
10548
+ if (options?.signal?.aborted) {
10549
+ throw new DOMException("Aborted", "AbortError");
10550
+ }
10551
+ const envelope = parseStructuralEnvelope(content);
10552
+ if (envelope) {
10553
+ return fromObjectAsync(envelope.data, {
10554
+ yieldEvery: options?.yieldEvery,
10555
+ signal: options?.signal
10556
+ });
10557
+ }
10558
+ return hydrateFromContent(content, options);
10559
+ };
10560
+
10561
+ export { ACCEPTED_DATE_FORMATS, ACCEPTED_DATE_FORMATS_REGEX, 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, 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, ordinalize, parseGedcom7CalendarPrefix, parseRangeBounds, parseStructuralEnvelope, pathCache, placeTranslator, pointerIds, profilePictureCache, pruneEmptyFamilies, pruneFamiliesByIds, registerExtensionTag, relativesCache, remountGedzipMediaAsDataUrls, removePointerByValue, resetRelativesCache, resolveLocalMediaUrl, resolveMediaContent, resolveObjeForm, rewriteGedcomFilePaths, serializeStructural, setCauseOfDeath, setChildPedigree, setDeceased, setFamilyMarriage, setLocalMediaResolver, setMediaContentResolver, setNestedGroup, splitOverlappingRanges, splitRange, spouseTagFor, toGedcomPedigree, unlinkRelative, updateFactRecord, withGedcom7Calendar };
@@ -0,0 +1,43 @@
1
+ import type { GedComType } from "../classes/gedcom";
2
+ import type { ConvertOptions } from "../interfaces/common";
3
+ import GedcomTree from "./parser";
4
+ export declare const STRUCTURAL_FORMAT: "treeviz-structural";
5
+ export declare const STRUCTURAL_VERSION: 1;
6
+ export type StructuralEnvelope = {
7
+ v: typeof STRUCTURAL_VERSION;
8
+ format: typeof STRUCTURAL_FORMAT;
9
+ data: Record<string, unknown>;
10
+ };
11
+ export declare const isStructuralEnvelope: (content: string) => content is string;
12
+ export declare const parseStructuralEnvelope: (content: string) => StructuralEnvelope | undefined;
13
+ /**
14
+ * Persist live tree without GEDCOM text. Firebase/IDB store this envelope.
15
+ * Export/download still uses `toGedcom`.
16
+ */
17
+ export declare const serializeStructural: (gedcom: GedComType, options?: ConvertOptions) => string;
18
+ /**
19
+ * Rebuild a live GedCom from `toObject(..., { persist: true })` output.
20
+ * Uses typed `create` + `addToList` (not `applyObject`).
21
+ */
22
+ export declare const fromObject: (data: Record<string, unknown>) => GedComType;
23
+ /**
24
+ * Same as `fromObject`, but yields to the event loop every `yieldEvery` records
25
+ * so cold-start hydrate does not freeze the UI for multi-second stretches.
26
+ */
27
+ export declare const fromObjectAsync: (data: Record<string, unknown>, options?: {
28
+ yieldEvery?: number;
29
+ signal?: AbortSignal;
30
+ }) => Promise<GedComType>;
31
+ /**
32
+ * Hydrate from either structural envelope JSON or classic GEDCOM text.
33
+ */
34
+ export declare const hydrateFromContent: (content: string, options?: Parameters<typeof GedcomTree.parse>[1]) => GedComType;
35
+ /**
36
+ * Prefer for login / cold start. Structural trees yield during fromObject;
37
+ * classic GEDCOM still parses in one turn after a paint yield.
38
+ */
39
+ export declare const hydrateFromContentAsync: (content: string, options?: Parameters<typeof GedcomTree.parse>[1] & {
40
+ yieldEvery?: number;
41
+ signal?: AbortSignal;
42
+ }) => Promise<GedComType>;
43
+ //# sourceMappingURL=structural.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/utils/structural.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,UAAiC,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,iBAAiB,EAAG,oBAA6B,CAAC;AAC/D,eAAO,MAAM,kBAAkB,EAAG,CAAU,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAChC,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC7B,MAAM,EAAE,OAAO,iBAAiB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B,CAAC;AA4DF,eAAO,MAAM,oBAAoB,GAChC,SAAS,MAAM,KACb,OAAO,IAAI,MAMb,CAAC;AAEF,eAAO,MAAM,uBAAuB,GACnC,SAAS,MAAM,KACb,kBAAkB,GAAG,SAevB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC/B,QAAQ,UAAU,EAClB,UAAU,cAAc,KACtB,MAWF,CAAC;AA8KF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,UAC/B,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC3B,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KACrD,OAAO,CAAC,UAAU,CA4BpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC9B,SAAS,MAAM,EACf,UAAU,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAC9C,UAUF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GACnC,SAAS,MAAM,EACf,UAAU,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,KACC,OAAO,CAAC,UAAU,CAapB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeviz/gedcom-parser",
3
- "version": "2.1.5",
3
+ "version": "2.1.7",
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",