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

@sailingnaturali/signalk-journey-replay

v0.1.4

Published

Replay published voyage data (journey-data archives) on any SignalK server — download a trip, press play

Readme

signalk-journey-replay

Replay real published voyage data on any SignalK server. Trips come from a manifest — the default points to Sailing Naturali's journeys at https://sailingnaturali.github.io/journey-data/manifest.json (data repo: sailingnaturali/journey-data). Each trip downloads once, verifies the sha256, caches to disk, and replays its SignalK deltas through the server as if the voyage were happening now. The recorded vessel becomes self on your server; any other vessels in the archive (AIS targets) appear as themselves.

Install

SignalK App Store: search journey replay → install → restart server → enable in Plugin Config.

npm package: @sailingnaturali/signalk-journey-replay

Configuration

| Key | Default | Notes | |-----|---------|-------| | manifestUrl | https://sailingnaturali.github.io/journey-data/manifest.json | Point at any conforming manifest to replay your own journeys. A trip's files.*.url may be relative to this URL (co-locate archives with the manifest) or absolute. | | tripId | — | Select a trip from the dropdown, or type a trip id directly (it's free-text). First start lists the available ids in the plugin status line and caches the manifest, so reopen the config afterward to get the populated dropdown. | | speed | 1 | Pacing divisor: 1 = real-time, 10 = 10× faster, 60 = 60× faster. Inter-delta gaps are divided by this value. Enum: 1, 10, 60. | | loop | false | Restart the trip automatically when it finishes. | | timestampMode | rebase | rebase shifts all timestamps so the trip starts at the current time — keeps time-relative consumers (tide plugins, weather overlays) coherent. original keeps the recorded timestamps, useful for historical analysis. |

How replay behaves

The plugin status line shows download progress (downloading <id> (N%)), then updates every five seconds during playback:

Replaying Boundary Pass, T+00:04 @ 10× — https://youtube.com/...

The YouTube link appears when the manifest entry includes one.

When the trip ends:

finished Boundary Pass: 4821 deltas, 2 malformed

Malformed lines (invalid JSON, missing updates array, unparseable timestamp) are skipped and counted; the replay continues.

The recorded vessel (meta.self in the archive) is mapped to self on your server by dropping the context field — the deltas arrive exactly as if your own instruments produced them. All other contexts (AIS targets) pass through unchanged.

Replayed values carry $source: journey-replay.<original-source> so they are distinguishable from live data on any consuming server.

Coexistence warning

Anything else emitting the same paths — simulators, mock plugins, real sensors — will interleave with the replay. Disable overlapping sources while replaying. Never treat replay output as live navigation data; this is for development, dashboards, and demos.

Offline

If the manifest URL is unreachable the plugin falls back to the last successfully cached copy. Previously downloaded trips replay with no network at all.

Publish your own journeys

Point manifestUrl at any manifest that matches the journey-data schema. The files.deltas entry is required; a self field in the metadata line is recommended so the recorded vessel maps correctly to self on replay.

Full schema, hosting recipe, and gotchas (absolute URLs, self mapping, rebase vs original): Bring your own journey data → journey-data/docs/BRING-YOUR-OWN-DATA.md.

License

MIT