@treeviz/gedcom-parser 2.0.12 → 2.1.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.
Files changed (67) hide show
  1. package/README.md +236 -989
  2. package/dist/classes/common.d.ts +4 -4
  3. package/dist/classes/common.d.ts.map +1 -1
  4. package/dist/classes/date.d.ts +2 -0
  5. package/dist/classes/date.d.ts.map +1 -1
  6. package/dist/classes/fam.d.ts +2 -1
  7. package/dist/classes/fam.d.ts.map +1 -1
  8. package/dist/classes/fams.d.ts.map +1 -1
  9. package/dist/classes/gedcom.d.ts +39 -2
  10. package/dist/classes/gedcom.d.ts.map +1 -1
  11. package/dist/classes/index.js +1364 -318
  12. package/dist/classes/indi.d.ts +19 -2
  13. package/dist/classes/indi.d.ts.map +1 -1
  14. package/dist/classes/list.d.ts.map +1 -1
  15. package/dist/classes/note.d.ts.map +1 -1
  16. package/dist/classes/obje.d.ts +2 -1
  17. package/dist/classes/obje.d.ts.map +1 -1
  18. package/dist/cli/index.js +1368 -313
  19. package/dist/constants/constants.d.ts.map +1 -1
  20. package/dist/constants/index.js +312 -73
  21. package/dist/factories/index.js +310 -71
  22. package/dist/index.d.ts +10 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1547 -288
  25. package/dist/interfaces/common.d.ts +6 -4
  26. package/dist/interfaces/common.d.ts.map +1 -1
  27. package/dist/interfaces/fam.d.ts +3 -0
  28. package/dist/interfaces/fam.d.ts.map +1 -1
  29. package/dist/interfaces/gedcom.d.ts +21 -1
  30. package/dist/interfaces/gedcom.d.ts.map +1 -1
  31. package/dist/interfaces/indi.d.ts +11 -1
  32. package/dist/interfaces/indi.d.ts.map +1 -1
  33. package/dist/kinship-translator/index.js +310 -71
  34. package/dist/structures/gedcom.d.ts +1 -0
  35. package/dist/structures/gedcom.d.ts.map +1 -1
  36. package/dist/types/types.d.ts +22 -4
  37. package/dist/types/types.d.ts.map +1 -1
  38. package/dist/utils/common-creator.d.ts.map +1 -1
  39. package/dist/utils/fact-edit.d.ts +12 -0
  40. package/dist/utils/fact-edit.d.ts.map +1 -1
  41. package/dist/utils/family-edit.d.ts +2 -2
  42. package/dist/utils/family-edit.d.ts.map +1 -1
  43. package/dist/utils/gedcom-version.d.ts +6 -0
  44. package/dist/utils/gedcom-version.d.ts.map +1 -0
  45. package/dist/utils/gedcom7-dates.d.ts +20 -0
  46. package/dist/utils/gedcom7-dates.d.ts.map +1 -0
  47. package/dist/utils/gedcom7-enumerations.d.ts +26 -0
  48. package/dist/utils/gedcom7-enumerations.d.ts.map +1 -0
  49. package/dist/utils/gedcom7-metadata.d.ts +19 -0
  50. package/dist/utils/gedcom7-metadata.d.ts.map +1 -0
  51. package/dist/utils/gedcom7-schema.d.ts +27 -0
  52. package/dist/utils/gedcom7-schema.d.ts.map +1 -0
  53. package/dist/utils/gedzip.d.ts +81 -0
  54. package/dist/utils/gedzip.d.ts.map +1 -0
  55. package/dist/utils/index.d.ts +9 -0
  56. package/dist/utils/index.d.ts.map +1 -1
  57. package/dist/utils/index.js +1547 -288
  58. package/dist/utils/local-media.d.ts +30 -0
  59. package/dist/utils/local-media.d.ts.map +1 -0
  60. package/dist/utils/media-utils.d.ts +10 -6
  61. package/dist/utils/media-utils.d.ts.map +1 -1
  62. package/dist/utils/multimedia.d.ts +38 -0
  63. package/dist/utils/multimedia.d.ts.map +1 -0
  64. package/dist/utils/parser.d.ts.map +1 -1
  65. package/dist/utils/uid.d.ts +6 -0
  66. package/dist/utils/uid.d.ts.map +1 -0
  67. package/package.json +2 -1
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Optional resolvers for local / cached media (GEDZIP paths, IndexedDB, etc.).
3
+ * The visualiser injects storage lookups; the parser stays host-agnostic.
4
+ */
5
+ export type LocalMediaResolver = (path: string) => Promise<string | undefined> | string | undefined;
6
+ export type MediaContentLookup = {
7
+ url?: string;
8
+ id?: string;
9
+ imgId?: string;
10
+ key?: string;
11
+ contentType?: string;
12
+ };
13
+ export type MediaContentResult = {
14
+ content: string;
15
+ contentType?: string;
16
+ };
17
+ export type MediaContentResolver = (media: MediaContentLookup) => Promise<MediaContentResult | undefined> | MediaContentResult | undefined;
18
+ export declare const setLocalMediaResolver: (resolver?: LocalMediaResolver) => void;
19
+ export declare const setMediaContentResolver: (resolver?: MediaContentResolver) => void;
20
+ export declare const isRemoteOrEmbeddedMediaUrl: (path?: string) => boolean;
21
+ /**
22
+ * Resolve a FILE payload to a browser-displayable URL when possible.
23
+ * Leaves http(s)/data/blob URLs unchanged; asks the injected resolver for local paths.
24
+ */
25
+ export declare const resolveLocalMediaUrl: (path?: string) => Promise<string | undefined>;
26
+ /**
27
+ * Resolve media bytes for GEDZIP export: host cache → local path → data URL → fetch.
28
+ */
29
+ export declare const resolveMediaContent: (media: MediaContentLookup) => Promise<MediaContentResult | undefined>;
30
+ //# sourceMappingURL=local-media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-media.d.ts","sourceRoot":"","sources":["../../src/utils/local-media.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAChC,IAAI,EAAE,MAAM,KACR,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAClC,KAAK,EAAE,kBAAkB,KAEvB,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,GACvC,kBAAkB,GAClB,SAAS,CAAC;AAKb,eAAO,MAAM,qBAAqB,GAAI,WAAW,kBAAkB,SAElE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,WAAW,oBAAoB,SAEtE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,OAAO,MAAM,YASvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAU,OAAO,MAAM,gCAUvD,CAAC;AAiBF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC/B,OAAO,kBAAkB,KACvB,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAwCxC,CAAC"}
@@ -1,13 +1,17 @@
1
1
  /**
2
- * Get file extension from filename
3
- * @param filename - The filename to extract extension from
4
- * @returns File extension without the dot, or empty string if no extension
2
+ * Get file extension from a filename, URL, or data URL.
5
3
  */
4
+ import type { MultiTag } from "../types/types";
6
5
  export declare const getFileExtension: (filename: string) => string;
7
6
  /**
8
- * Check if a file format is an image format
9
- * @param format - The file format/extension to check
10
- * @returns true if the format is a supported image format
7
+ * Check if a file format is an image format.
8
+ * Accepts extensions (`jpg`), MIME subtypes, or full `data:image/...` URLs.
11
9
  */
12
10
  export declare const isImageFormat: (format: string) => boolean;
11
+ /** Resolve FORM / media type from flat (5.5.1) or nested (GEDCOM 7) OBJE. */
12
+ export declare const resolveObjeForm: (obje?: {
13
+ get?: (path: MultiTag) => {
14
+ toValue?: () => unknown;
15
+ } | undefined;
16
+ }) => string | undefined;
13
17
  //# sourceMappingURL=media-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-utils.d.ts","sourceRoot":"","sources":["../../src/utils/media-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAGnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAc9C,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"}
@@ -0,0 +1,38 @@
1
+ import type { MediaList } from "../interfaces/indi";
2
+ import type { IndiKey, ObjeKey } from "../types/types";
3
+ import type { GedcomExportVersion } from "./gedcom-version";
4
+ export type CreateMultimediaInput = {
5
+ /** FILE payload: URL or relative GEDZIP path. */
6
+ file: string;
7
+ /** Format / extension (jpg, png, …). Inferred from `file` when omitted. */
8
+ form?: string;
9
+ title?: string;
10
+ /**
11
+ * GEDCOM 7 `FILE.FORM.TYPE` (e.g. `photo`, `audio`, `video`, `document`).
12
+ * Written only for GEDCOM 7 nesting.
13
+ */
14
+ mediType?: string;
15
+ primary?: boolean;
16
+ /**
17
+ * Structure style for the OBJE record. Defaults to the dataset HEAD version
18
+ * (or 5.5.1).
19
+ */
20
+ gedcomVersion?: GedcomExportVersion | string;
21
+ };
22
+ export type AttachMultimediaOptions = {
23
+ primary?: boolean;
24
+ };
25
+ export type CollectMultimediaOptions = {
26
+ indiIds?: IndiKey[];
27
+ namespace?: string | number;
28
+ };
29
+ /**
30
+ * Infer a short FORM token from a path/URL (best-effort).
31
+ */
32
+ export declare const inferMediaForm: (file: string, fallback?: string) => string;
33
+ /**
34
+ * Merge MediaList maps (later entries overwrite same keys).
35
+ */
36
+ export declare const mergeMediaLists: (...lists: Array<MediaList | undefined>) => MediaList;
37
+ export declare const isObjePointer: (value: unknown) => value is ObjeKey;
38
+ //# sourceMappingURL=multimedia.d.ts.map
@@ -0,0 +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 +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;;;;oBAkThD,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;;;;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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * GEDCOM 7 UID (UUID) helpers.
3
+ * Spec: each record may carry `n UID <uuid>`.
4
+ */
5
+ export declare const createGedcomUid: () => string;
6
+ //# sourceMappingURL=uid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uid.d.ts","sourceRoot":"","sources":["../../src/utils/uid.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe,QAAO,MAalC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeviz/gedcom-parser",
3
- "version": "2.0.12",
3
+ "version": "2.1.0",
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",
@@ -149,6 +149,7 @@
149
149
  "chalk": "^5.6.2",
150
150
  "commander": "^14.0.2",
151
151
  "date-fns": "^2.30.0",
152
+ "jszip": "^3.10.1",
152
153
  "lodash-es": "^4.17.22"
153
154
  },
154
155
  "devDependencies": {