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

@lionweb/server-additionalapi

v0.4.0

Published

As part of the additional APIs (i.e., APIs not required by the LionWeb specifications) we introduced an API for performing bulk imports. This API has one strong limitation with respect to standard store operations: it can process only nodes that are new.

Downloads

199

Readme

Bulk import operation

As part of the additional APIs (i.e., APIs not required by the LionWeb specifications) we introduced an API for performing bulk imports. This API has one strong limitation with respect to standard store operations: it can process only nodes that are new. In exchange it provides higher speed. It is intended for importing large number of nodes, typically in the hundreds of thousands of nodes per insert.

Structure of a Bulk Import request

A Bulk Import requests consists of two elements:

  • A list of attach points
  • A list of nodes

The nodes provided must all be new nodes (i.e., we should not have any node with the same ID in the repository). If this constraint is not respected the operation will fail.

The nodes constitutes one or more trees: some of the nodes are parent of some of the other nodes specified. However eventually these trees must be attached to existing nodes. This is done based on the information provided in the attach points. The attach points specify where we should attach the trees provided. Each attach point is constituted by a node id and a containment.

For example, let's suppose that I want to specify in my bulk import two method declarations to a class declaration. This example is clearly fictitious because the bulk import would be typically used for much larger operations. In this case the two method declarations will each have a "root" (the nodes representing the entire method declaration) plus many other nodes (the parameter declaration, the statements constituting the body of the method, the expressions within those statements, etc.). So we could get a list of, let's say, 100 nodes. These nodes will come from each or the other method and will be put together in the same node lists. There will be also a list of 2 attach points. It will specify the node id of the class declaration in which these two nodes should be inserted. It will also specify the containment under which these nodes should be inserted (the containment representing the members of the class declaration).

Note that:

  • all nodes to be imported must not exist
  • all containers specified in the attach point must exist

Binary format

The operation can use a payload specified in JSON format or in ProtoBuf.

For this format with define the schema in its own DSL and then we generate code in Typescript to read binary messages based on those schemas.

Resources: