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

wiki-plugin-linkitylink

v0.0.10

Published

Linkitylink integration plugin for federated wiki

Readme

wiki-plugin-linkitylink

Federated Wiki plugin that integrates Linkitylink - a privacy-first link page service.

What This Plugin Does

This plugin integrates Linkitylink with Federated Wiki by:

  • Launching a dedicated linkitylink instance for each wiki
  • Auto-configuring that instance with the wiki's base URLs
  • Proxying requests between wiki and linkitylink
  • Managing the lifecycle of the linkitylink service

Each wiki gets its own linkitylink instance, enabling true forking and independent operation.

Installation

1. Install the plugin

# In your wiki's node_modules directory
cd /path/to/wiki/node_modules
git clone https://github.com/planet-nine-app/wiki-plugin-linkitylink.git
cd wiki-plugin-linkitylink
npm install

2. Install linkitylink

# Clone linkitylink where the plugin can find it
cd /path/to/planet-nine
git clone https://github.com/planet-nine-app/linkitylink.git
cd linkitylink
npm install

3. Use in your wiki

Create a page with a linkitylink item to trigger plugin loading. The plugin will automatically:

  • Launch its own linkitylink instance
  • Configure it with your wiki's base URLs
  • Start proxying requests
{
  "type": "linkitylink",
  "id": "unique-id",
  "text": "My Link Page"
}

Routes

All routes are proxied from the wiki to the Linkitylink service:

  • /plugin/linkitylink/ → Linkitylink homepage
  • /plugin/linkitylink/create → Create link page
  • /plugin/linkitylink/view/:emojicode → View link page by emojicode
  • /plugin/linkitylink/t/:alphanumeric → View link page by alphanumeric ID

Configuration

Environment Variables

Required for multiple wikis on same machine:

# Wiki 1
export LINKITYLINK_PORT=3010
export LINKITYLINK_PATH=/path/to/linkitylink
wiki --port 3000

# Wiki 2 (different terminal)
export LINKITYLINK_PORT=3011
export LINKITYLINK_PATH=/path/to/linkitylink-copy
wiki --port 3001

Variables:

  • LINKITYLINK_PORT - Port for this wiki's linkitylink instance (default: 3010)
  • LINKITYLINK_PATH - Path to linkitylink installation (default: ../../linkitylink relative to plugin)
  • ENABLE_APP_PURCHASE - Show "Buy in App" button (default: false, set to true to enable)

Base URLs (owner.json)

The plugin automatically configures linkitylink with base URLs from ~/.wiki/status/owner.json:

{
  "fountURL": "http://localhost:3006",
  "bdoURL": "http://localhost:3003",
  "addieURL": "http://localhost:3005"
}

For wiki federation, each wiki's owner.json should point to its own base:

// Wiki A's owner.json
{
  "fountURL": "http://base-a.example.com/plugin/allyabase/fount",
  "bdoURL": "http://base-a.example.com/plugin/allyabase/bdo",
  "addieURL": "http://base-a.example.com/plugin/allyabase/addie"
}

// Wiki B's owner.json
{
  "fountURL": "http://base-b.example.com/plugin/allyabase/fount",
  "bdoURL": "http://base-b.example.com/plugin/allyabase/bdo",
  "addieURL": "http://base-b.example.com/plugin/allyabase/addie"
}

How It Works

Plugin Startup Flow

  1. Plugin loads when wiki page uses linkitylink type
  2. Reads configuration from ~/.wiki/status/owner.json
  3. Checks for running linkitylink on configured port
  4. If not running:
    • Spawns linkitylink as child process
    • Sets environment variables (PORT, FOUNT_BASE_URL, BDO_BASE_URL, ADDIE_BASE_URL)
    • Waits for startup (3 seconds)
  5. If already running:
    • Sends configuration update via POST /config
  6. Creates proxy for all /plugin/linkitylink/* routes

Request Flow

  1. User visits http://your-wiki.com/plugin/linkitylink/view/🔗💎...
  2. Plugin strips /plugin/linkitylink prefix
  3. Proxies to http://localhost:{LINKITYLINK_PORT}/view/🔗💎...
  4. Linkitylink fetches data from configured base URLs
  5. Returns beautiful SVG page to wiki

Architecture Benefits

  • Independent Instances - Each wiki runs its own linkitylink
  • Isolated Bases - Wiki A connects to Base A, Wiki B connects to Base B
  • True Forking - Fork a wiki page, get independent linkitylink data
  • Process Management - Plugin manages linkitylink lifecycle
  • Automatic Configuration - No manual setup required

Dependencies

  • http-proxy: ^1.18.1 - For proxying requests to Linkitylink service
  • node-fetch: ^2.6.1 - For configuring linkitylink via HTTP

License

MIT