gedcom-d3
v2.0.9
Published
A GEDCOM parser, which translates GEDCOM (.ged) files into D3 capable JSON. This package is specifically designed to prepare data for use in https://github.com/oh-kay-blanket/blood-lines
Maintainers
Readme
gedcom-d3
A parser and converter for GEDCOM (.ged) files, producing D3-capable JSON for genealogy visualization, especially with 3d-force-graph.
- Based on: tmcw/parse-gedcom
- See it in action: oh-kay-blanket/blood-lines
Installation
npm install --save gedcom-d3API
parse(gedcomString)
- Input: A string containing GEDCOM data.
- Output: An array of parsed GEDCOM objects (tree structure).
d3ize(tree)
- Input: The output of
parse()(GEDCOM tree array). - Output: An object with the following structure:
nodes: Array of person nodes, each with properties likeid,name,surname,gender,dob,yob,color,bio, etc.links: Array of relationship links (parent/child, spouse, etc.), withsource,target, and relationship type.families: Array of family groupings from the GEDCOM data.surnameList: Array of unique surnames with color assignments.
Usage Example
import { parse, d3ize } from 'gedcom-d3'
import gedcomFile from './gedcoms/sample_ancestors.ged'
const tree = parse(gedcomFile)
const d3Data = d3ize(tree)
// d3Data.nodes and d3Data.links can be fed into 3d-force-graph or similar D3 visualizationsNode & Link Structure
Node (Person)
id: Unique identifier (GEDCOM pointer)name: Full namefirstName,surname: Parsed name partsgender: 'M' or 'F'dob,yob: Date/year of birthdod,yod: Date/year of deathpob,pod: Place of birth/deathfamilies: Array of family objectscolor: Assigned color for surnamebio: Biographical notes (if present)- ...and more, depending on GEDCOM tags
Link (Relationship)
source: Source personidtarget: Target personidsourceType,targetType: Relationship roles (e.g., 'HUSB', 'WIFE', 'CHIL')type: Relationship type (e.g., 'MARR', 'DIV', or parentage)
Updating & Publishing the NPM Package
1. Make your changes
- Edit code, update version in
package.json(see semver).
2. Test locally (optional but recommended)
- In another project, run:
npm install /path/to/gedcom-d3 - Or use
npm linkfor local development.
3. Commit and push your changes
git add .
git commit -m "Describe your changes"
git push4. Bump the version
- For a patch, minor, or major update:
npm version patch # or 'minor' or 'major' git push && git push --tags
5. Publish to NPM
- Log in if you haven't:
npm login - Publish:
npm publish - For scoped packages (not needed here):
npm publish --access public
6. Verify
- Check your package at npmjs.com/package/gedcom-d3
License
ISC
Contributing
Pull requests and issues welcome! See oh-kay-blanket/gedcom-d3.
Credits
- tmcw/parse-gedcom for the original parser
- vasturiano/3d-force-graph for visualization inspiration
- oh-kay-blanket/blood-lines for implementation example
