Socket
Socket
Sign inDemoInstall

giraffe

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

giraffe

Lightweight Graph DB implementation


Version published
Weekly downloads
18
decreased by-55%
Maintainers
1
Weekly downloads
 
Created
Source

Giraffe

A simple node & browser graph database

Travis CI Version NPM Downloads LICENSE

Install

npm install --save giraffe

Use

import Giraffe from 'giraffe';

const db = new Giraffe();

export default db;

Methods

  • new Giraffe(data, callback)

    • data: Object Optional
      • Should be in the shape of { nodes: [], edges: [] }
      • Labels are created dynamically based on data passed in
      • Nodes and Edges are checked for their correct shape.
    • callback: Function Optional
      • Can be passed first if no data is supplied
      • Callback is called just before returning on each Database Method
    • Create the DB instance
  • .create(label, data)

    • label: String || Array Optional
    • data: Object
    • label is type checked and coerced into a Array within the Node constructor
  • .remove(nodes)

    • nodes: Array Array of Nodes to be removed from graph
      • this is automatically converted to an Array if a single node is passed in.
  • .edge([ from ], [ to ], label, properties)

    • from Array Array of Nodes where edge originates
    • to: Array Array of Nodes where edge goes
    • label: String Optional
    • properties: Object Optional
  • .query(label, properties)

    • label: String Optional
    • properties: Object Optional
      • you can search for an edge with the property key _edges
    • An empty query returns all nodes
    • Queries return only their immediate relationships
  • .update([ nodes ], [ labels ], data)

    • nodes: Array (or single) node to be updated
    • labels: Array (or single) label to be added to Nodes.
    • data: Object Data set to be merged with previous data, any duplicate keys will be overwritten.
    • edge labels cannot be updated, an error will be thrown

Internal Structure

Database

{
  /**
   * All relationships with additional properties
   */
  edges: [],

  /**
   * All nodes with properties
   */
  nodes: [],

  /**
   * Dynamic key:value store for tracking known node and edge labels
   */
  labels: {
    nodes: {
      [label]: [/* Array of Node ids */]
    },
    edges: {
      [label]: [/* Array of Edge ids */]
    }

  }
}

Callback

The callback passed to your DB instance is called before the return statement of every method. That is to say db.create returns the created Node, but just before that return you callback is fired.

The calls are all identical it is called with the Type of request and the modified, added, or removed data.

methodtypedata
Create'create'Node
Remove'remove'Array[Node]
Edge'edge'Array[Edge]
Query'query'Array[Query Result]
Update'update'Array[Updated Nodes / Edges]

Node

{
  identity: <UUID />,
  properties: Object,
  labels: Array,
  edges: Array,
}
Node information
  • properties is the object passed into the db.create method.
  • edges is an array of Edge identity's before a query, after a query it is an array of references to the Node's they represent

Edge

{
  identity: <UUID />,
  from: <Node Identity /> || <Node />,
  through: <Node Identity /> || <Node />,
  label: String,
  properties: Object
}
Edge information
  • properties is the object passed into the db.edge method.
  • from and through are stored in the DB as from.identity and through.identity.
  • When db.query returns from and through are references to the Node's they represent

Coming Features

Checkout out the TODO Project on Github.

  1. Complex Queries.
  2. Investigate Typescript.

Keywords

FAQs

Package last updated on 17 Jan 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc