npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@liberation-data/drivine

v2.8.0

Published

Best and fastest graph database client for TypeScript / Node.js. Provides a level of abstraction for building highly scalable applications, without compromising architectural integrity

Downloads

568

Readme

DrivineSplash

drivine

⚠️ Drivine website has moved: here. Please report any broken links. Even better, a PR is very welcome! 🙏

Drivine is a graph database client for Node.js and TypeScript. It was created with the following design goals:

  • Support multiple graph databases (simultaneously, if you wish). Currently AgensGraph and Neo4j (or other BOLT compatible graph DBs).
  • Scale to hundreds and thousands of transactions per second, without compromising architectural integrity.

With regards to the second point on scaleability, let's break that down into component facets.

Features

  • Facilitates the use of well understood object-oriented and functional programming patterns.
  • Supports implementation of code that adheres to a single responsibility principle (SRP). NestJS will be optional, but is recommended.
  • Takes care of infrastructure concerns, so that you can focus on making the most of your data.
  • Removes boiler plate code, especially the tedious and error-prone kind.
  • Supports streaming, without back-pressure. Large amounts of data can be managed in a timely and memory efficient manner.
  • Light-weight use-case specific object graph mapping (OGM). Drivine is NOT an OGM in the traditinoal sense. The results are then mapped to/from a use-case specific model object.

Quick Start

Follow the Quick Start section in our User Guide or clone the sample app and use it as a starter template.

Start creating repositories like the one below.

@Injectable()
export class RouteRepository {
    constructor(
        @InjectPersistenceManager() readonly persistenceManager: PersistenceManager,
        @InjectCypher('@/traffic/routesBetween') readonly routesBetween: CypherStatement) {
    }

    @Transactional() // Has default Propagation.REQUIRED - partipicate in a current txn, or start one.
    public async findFastestBetween(start: string, destination: string): Promise<Route> {
        return this.persistenceManager.getOne(
            new QuerySpecification<Route>()
                .withStatement(this.routesBetween)
                .bind([start, destination])
                .limit(1)
                .transform(Route)
        );
    }
}

Example Applications

If you use Drivine and your code is public, feel free to make PR and add yourself to the list.

Quick Start Template

Clone the official sample app and start hacking.

Repository: github.com/liberation-data/drivine-inspiration

This sample is a basic starter template, with some tutorials. It has some endpoints for traffic routing, movies/films and other typical use-cases. Rather than start from scratch, choose the one that closely matches yours, and modify.

SlackMap

New version of slackmap.com is full rewrite with technology update. The OrientDB was replaced with Neo4j and we choose Drivine as the way to work with the database.

Check out how Drivine supports Neo4j in Full Stack JavaScript App using Angular + Nest + Nx Workspace Monorepo.

Repository: github.com/SlackMap/slackmap

  • master branch - not released yet
  • develop branch - has all the current work

Documentation

Best way to learn Drivine is with our User Guide.


Tutorials

New to graph databases? Read some tutorials.

Have a tutorial you'd like to share? Get in touch with me.


Feedback

I'm not sure how to do [xyz]

If you can't find what you need in the Quick Start or User Guides, please post a question on StackOverflow, using the Drivine tag.

Interested in contributing?

Great! A contribution guide, along with detailed documentation will be published in the coming days.

I've found a bug, or have a feature request

Please raise a GitHub issue.


Have you seen the light?

Drivine is a non-profit, community driven project. We only ask that if you've found it useful to star us on Github or send a tweet mentioning us (@doctor_cerulean). If you've written a Drivine related blog or tutorial, or published a new Drivine-powered app, we'd certainly be happy to hear about that too.

Drivine is sponsored and led by Jasper Blues with contributions from around the world.


License

Copyright (c) 2022 Jasper Blues

Drivine is free software: you can redistribute it and/or modify it under the terms of the APACHE LICENSE, VERSION 2.0 as published by the Apache Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache Software License, Version 2.0 for more details. You should have received a copy of the Apache Software License along with this program. If not, see http://www.apache.org/licenses/.