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

vector-clock-class

v2.0.0

Published

make yourself some VectorClock instances

Downloads

5

Readme

#vector-clock-class#

Overview

A vector clock is a data structure for keeping track of logical time for a set of events, allowing them to be partially ordered.

Install it with

npm install --save vector-clock-class

API

var Clock = require('vector-clock-class')

Clock(
    String | Number id,
    (Integer start) | null
) -> vector_clock
  • id should distinguish this clock from all the others. It is saved to the class instance as id
  • start is an optional parameter which sets the version number from which the clock should start counting.

Methods and Attributes

In the methods below, id is a hashable object. Semantically, it should be the unique identifier of another clock.

###vector_clock.clock###

The vector clock-- a map from source_ids to version numbers. Like the C function from Lamport's paper. It's worth noting that this means this module plays well with npm.im/vectorclock, although this breaks the contract somewhat, since mixu's library expects object literals.

###vector_clock.get(id) -> Integer version###

Returns the version number for the specified id, or -Infinity if it cannot be found.

###vector_clock.update(id, version) -> Integer|false###

Bump the entry for a given id. version is required to ensure updates from this vector_clock which occur after the bump have a later version number. Note that the version is optional only if id === vector_clock.id. The return value is false if version is not specified when it should be. Otherwise it is the new version number for id.

###vector_clock.createReadStream() -> stream###

This method creates a stream; randomly orders the keys of the clock; pushes onto a newly-created readableStream one object of form {id: key, version: n} per key; and then closes the stream. It also vector_clock.update(vector_clock.id). This facilitates easily creating digests of all the updates the clock has seen, useful for the scuttlebutt

The competition

There's already another venerable vector clock library out there. This one more or less grew out of my scuttlebutt implementation. It differs from vectorclock in it's scope (slightly smaller), that it presents a way to stream clock data out of it, and it's API.