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

keyv-arango

v1.4.0

Published

ArangoDB adapter for Keyv, the simple persistent key-value storage module.

Downloads

5

Readme

keyv-arango

ArangoDB store for Keyv: simple key-value storage with support for multiple backends.

Install

npm install keyv-arango keyv arangojs
# or
yarn add keyv-arango keyv arangojs
# or
pnpm add keyv-arango keyv arangojs

Usage

import Keyv from 'keyv'
import { KeyvArango, KeyvArangoOptions } from 'keyv-arango'

const options: KeyvArangoOptions = {
  // An ArangoDB database config object. This field is required.
  // If no database is specified, the default `_system` database will be used.
  config: {
    url: process.env.ARANGO_URL
  },
  // All fields below are optional.
  cacheCollection: true, // whether to cache the collection instance in between data calls. Defaults to true.
  collectionName: 'keyv', // the name of the collection to use. Defaults to 'keyv'.
  expireAfter: 0, // how long to wait before expiring a key (in milliseconds). Defaults to 0.
  field: 'expireDate', // the name of the field which will store the expiration date. Defaults to 'expireDate'.
  namespace: null // the keyv namespace to use. Defaults to null.
}

const store = new KeyvArango(options)

const keyv = new Keyv({ store })

// From here on, you can use keyv as usual.

await keyv.set('foo', 'bar', 1000)

await keyv.get('foo')

ArangoDB and TTL Indexes

When using TTL indexes in ArangoDB is no guarantee that a key will be deleted at the exact time specified, only that the key will be deleted. ArangoDB runs a background thread which is responsible for cleaning up keys. The frequency of this thread is configurable, but defaults to 30 seconds.

This is an important caveat to keep in mind when using this library and ArangoDB in general. Without prior configuration, ArangoDB is not suitable for short-lived keys. When starting an ArangoDB instance the --ttl.frequency option can be used to configure the frequency of the background thread. For more information, see the ArangoDB documentation. In fact the CI tests for this library use a frequency of 1 second to ensure that the tests pass in a timely manner.