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

signalk-entropy-saillog

v1.1.1

Published

Signal K plugin that pushes position data to the entropysaillog tracker ingest (fork of signalk-saillogger)

Readme

signalk-entropy-saillog

A Signal K plugin that pushes position data to your entropysaillog tracker ingest. A fork of signalk-saillogger repointed at your own POST /ingest endpoint: it collects position, SOG, and COG from Signal K, buffers them through connectivity dropouts, and pushes batches.

The saillogger.com metadata / AIS / monitoring-config push paths are removed — this fork only feeds the live tracker.

Install

In the Signal K server Appstore, search for signalk-entropy-saillog, install it, and restart the server. (It's published to npm with the signalk-node-server-plugin keyword, so it appears in the Appstore like any other plugin — no shell/SSH access needed.)

Configure

In the Signal K plugin config:

  • Ingest URL — your POST /ingest endpoint, e.g. https://xxxxx.execute-api.us-west-2.amazonaws.com/ingest
  • HMAC signing secret (recommended) — signs each push with x-timestamp + x-signature. Set this and leave the API key empty.
  • API key (optional fallback) — sent as x-api-key; only used when no secret is set. Provide a secret OR an API key (endpoint plus at least one credential is required).
  • GPS source (optional) — restrict to one GPS $source if you have several.

What it sends

Each push is one versioned-contract batch:

{
  "schema_version": 1,
  "batch_id": "<firstTs>-<lastTs>-<count>",
  "points": [
    { "timestamp": "2026-06-16T03:00:00.000Z", "lat": 26.70, "lon": -77.20, "sog": 6.5, "cog": 110.0 }
  ]
}
  • Auth: with a secret configured, each push is signed — HMAC-SHA256 over "<x-timestamp>.<body>" sent as x-signature (mirrors the server's auth.py); the server rejects stale timestamps and bad signatures. Without a secret it falls back to the x-api-key header.
  • Durable idempotency: batch_id is derived from the buffered rows (timestamp range + count). The buffer is persisted on disk, so after a plugin restart the same rows produce the same id — a resend overwrites the same object server-side instead of duplicating track points.
  • On HTTP 200 the sent rows are flushed from the buffer; on transient errors the buffer is kept and retried; an HTTP 400 (contract rejection) drops the batch so it can't wedge the queue.

Develop

npm install          # no runtime dependencies (native http/https)
npm test             # unit tests: payload builder, signing, and the http POST

lib/payload.js builds the contract payload + the durable batch_id; it is pure and unit-tested so the plugin's output provably matches the ingest contract. lib/auth.js mirrors the server's HMAC signing byte-for-byte. lib/http.js is a tiny native-https JSON POST (the plugin has zero runtime dependencies).

License

Apache-2.0. Original work © Saillogger LLC and Ilker Temir; fork modifications for entropysaillog.