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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@digitallinguistics/db

v0.6.0

Published

A Node.js Cosmos DB client for DLx projects.

Readme

Cosmos DB Client for Digital Linguistics (DLx)

Database Model

The DLx database has two containers:

  • data
  • metadata

Data

The data container contains Lexemes and Texts. This container is partitioned by language (partition key /language/id). As such, all items in the data container must have a language property whose value is an object with, minimally, an id property. Each item in the container must also have a "type" of either "Lexeme" or "Text". As an example:

{
  "type": "Lexeme",
  "language": {
    "id": "f8a669d3-131b-44f3-88ab-edaa33604202",
    "name": {
      "eng": "Chitimacha"
    }
  }
}

Metadata

The metadata container contains all other types of database objects. Each item in this container must have a "type" property, which is also its partition key (/type).

Types of Metadata

  • BibliographicSource
  • Language
  • Location
  • Media
  • Person
  • User

Permissions

There are 4 types of permissions:

  • public: Any user may view the resource.
  • viewer: The user may view the resource, even when not public.
  • editor: The user may edit but not delete the resource.
  • admin: The user may edit and delete the resource, or set permissions for it.

Objects which have permissions:

  • Bundle
  • Language
  • Note (public only)
  • Project
  • Status (public only)

Permissions on one resource do not imply certain permissions on another permissioned resource. There is no hierarchy of permissions between Projects and Languages. If a Project is publicly viewable, its languages may not be, and vice versa.

Permissions for other items are determined by their parent item, because they are only ever viewable in the context of that parent item. This may result in, for example, a single Lexeme being viewable using one filter but not another. The user may have permission to view a Project's info but not a Language's info, so the user could view that Lexeme in the context of the Project but not in the context of the Language.

Items which get their permissions from their parent items:

  • Lexeme
  • Person
  • Text

It is up to software implementations to impose any type of consistency of permissions between Languages and Projects.

Releases

Releases are currently manual:

  1. npm version
  2. Push to version control.
  3. Create a GitHub release.
  4. GitHub Actions automatically publishes the release to npm.