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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@entryscape/entrysync

v0.8.1

Published

A JS-library for harvesting/synchronizing metadata to and from EntryStore

Readme

EntrySync - library for synchronizing entries with metadata from various sources

The EntryScape platform with the backend EntryStore relies on the use of entries that may contain both a resource, metadata and external metadata. At the heart of the library is the mechanism that synchronizes metadata of entries by doing metadata fingerprinting.

Installation

Dependencies are installed by running yarn.

Synchronization patterns

The core functionality of the library lets you build a custom synchronization mechanism. However, most cases can be covered with the following established synchronization patterns. The patterns are listened below, each together with a corresponding CLI command.

Graph synchronization pattern - src/graph/graphSync.js

This pattern takes a single graph as input and breaks it up into smaller graphs centered around entities and synchronizes them as entries. The algorithm for breaking up the graph is based on detecting entities based on rdf:type and includes all outgoing triples and then repeats the procedure for all blank nodes in object position.

CLI command:

cd cli node graphSync.js config.json

Where config.js has to be provided, check the example cli/graphSync_exampleConfig.json

Type based synchronization pattern - src/context/typeSync.js

This pattern synchronizes entries in one context with another context (potentially in another EntryStore instance). Detection of entries is based on one or several classes (rdf:type).

CLI command:

cd cli node typeSync.js config.json

Where config.js has to be provided, check the example cli/typeSync_exampleConfig.json

Traversal synchronization pattern - src/context/traverseSync.js

This pattern synchronizes entries in one context with another context (potentially in another EntryStore instance). Detection of entries is based on an initial starting point of one or several entries and includes all entries reachable via a set of properties.

CLI command:

cd cli node traverseSync.js config.json

Where config.js has to be provided, check the example cli/traverseSync_exampleConfig.json

Utility functionality in CLI

Context creation

cd cli node context.js config.json create TYPE [ENTRYID]

You can leave out the ENTRYID parameter and an id will be generated for you. The value of TYPE must be one of:

  • catalog - Data catalog typically handled by EntryScape Catalog
  • terms - Terminology context typically handled by EntryScape Terms
  • workbench - Any kind of project with linked data typically handled by EntryScape Workbench
  • model - Modeling project typically handled by EntryScape Models

Context removal

cd cli node context.js config.json remove ENTRYID

Where ENTRYID has be an entryid of an existing context.

Context listing

cd cli node context.js config.json list

Core functionality

The following classes are central to how the synchronization works:

src/EntrySync.js This class handles synchronizing metadata as Entries in an EntryStore instance, uses EntityIndex and DuplicateIndex to steer what should be synchronized. src/EntityIndex.js This class handles an index of synchronized entries with the corresponding metadata fingerprint, useful to speed up conseqitive synchronizations, can be persisted on disk. src/DuplicateIndex.js Keeps track of which entities that have already been synched and blocks them from being duplicated.