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

@bpmsoftwaresolutions/renderx-plugins

v1.0.0

Published

RenderX plugins meta-package with unit tests and build + manifest generation

Readme

RenderX Plugins

Official plugin repository for the RenderX platform. This repo contains all panel-slot UI plugins and orchestration logic that extend the RenderX core, built according to the Manifest‑Driven Panel Slot Plugin architecture (ADR‑0014).

Reference: https://github.com/BPMSoftwareSolutions/MusicalConductor/blob/main/tools/docs/wiki/adr/0014-manifest-driven-panel-slot-plugins.md


Overview

RenderX plugins are modular, lazily-loaded components integrated into the RenderX shell via a manifest. Each plugin typically provides:

  • UI component(s) mounted into named slots (left, center, right, header-left, header-center, header-right)
  • Orchestration handlers registered with the Musical Conductor (sequence/movement/beat)
  • Isolated build artifacts in dist/{plugin}/index.js
  • A manifest entry consumed by RenderX at runtime

This repository builds and publishes:

  1. All plugin bundles to dist/
  2. A generated dist/manifest.json for RenderX to consume

Quickstart

  • Requirements: Node.js 18+
  • Install deps: npm ci
  • Build all plugins and manifest: npm run build
  • Run tests: npm test

Artifacts are emitted to dist/, including dist/manifest.json.


Repository Structure

  • plugins/ — source for all plugins (each folder represents a plugin or plugin group)
    • component-library-plugin/
    • control-panel-plugin/
    • canvas-ui-plugin/
    • canvas-*/ (drag, resize, selection, create)
    • library-*/ (drag/drop)
    • header/ (left, center, right)
    • theme-management-plugin/
  • scripts/
    • build-plugins.mjs — copies plugin source to dist/{plugin}/...
    • generate-manifest.mjs — scans dist and produces dist/manifest.json
  • tests/ — unit tests (Jest, jsdom)
  • jest.config.js — Jest configuration
  • shims/communication — test shims for conductor communication
  • docs/ — architecture and repo split notes

NPM Scripts

  • npm test — run unit tests (Jest)
  • npm run test:ci — CI mode tests
  • npm run build:plugins — copy-based build to dist/
  • npm run build:manifest — generate dist/manifest.json
  • npm run build — build plugins then generate manifest

Build and Manifest Scripts

  • Build plugins (copy from plugins/ to dist/):
    • Usage: node ./scripts/build-plugins.mjs
    • Output: dist//** (all files copied; no bundling)
  • Generate manifest (scan dist for plugin entries and write dist/manifest.json):
    • Usage: node ./scripts/generate-manifest.mjs
    • Notes:
      • A plugin is recognized if dist//index.js exists
      • Known UI slot hints are inferred by path; see slotHintsByRelPath in scripts/generate-manifest.mjs
      • Header UI plugins are marked autoMount: false; other plugins default to autoMount: true

Manifest and Slot Mapping

The manifest is generated from dist/**/index.js entries. Known UI slot mappings are inferred by path hints in scripts/generate-manifest.mjs:

  • component-library-plugin/ → slot: left, export: LibraryPanel
  • control-panel-plugin/ → slot: right, export: ControlPanelPanel
  • canvas-ui-plugin/ → slot: center, export: CanvasPage
  • header/left/ → slot: header-left, export: HeaderLeft
  • header/center/ → slot: header-center, export: HeaderCenter
  • header/right/ → slot: header-right, export: HeaderRight

If you add a new UI plugin that should auto-mount into a slot, either:

  • Place it under one of the recognized paths above, or
  • Update slotHintsByRelPath in scripts/generate-manifest.mjs to declare the mapping.

All other plugins will be included in the manifest without a ui slot hint by default.


Development Conventions

  • Callback-first orchestration: Use conductor.play("", "", payload, callbacks) and handle results via provided callbacks. Avoid direct DOM event listeners in plugins.
  • Follow repository TDD workflow: Red → Green → Refactor.
  • Keep plugin bundles isolated; do not depend on RenderX internals. Interact via the Musical Conductor only.

Adding a New Plugin

  1. Create plugins/your-plugin-name/index.js and export your entry API/UI.
  2. Run npm run build to copy to dist/ and update dist/manifest.json.
  3. If your plugin should render UI in a specific slot, add a slot hint in scripts/generate-manifest.mjs.
  4. Add unit tests under tests/ to validate your orchestration handlers and expected conductor interactions.

Using with the RenderX App

Short-term integration (per repo split plan):

  • After building this repo, copy dist/* into the RenderX app’s public/plugins folder so the app can fetch dist/manifest.json and bundles.
  • Alternatively, point RenderX to a CDN or static host that serves this repo’s dist/.

Long-term, RenderX will fetch the manifest and plugin bundles from a CDN/Pages URL.


Testing

  • Test runner: Jest (jsdom). See jest.config.js.
  • Setup files: tests/setup/jest.setup.ts, tests/setup/jest.cia-plugins.setup.ts, global setup/teardown.
  • Location: tests/*/.test.(ts|js)

Run: npm test


Contributing

  • Use TDD (Red-Green-Refactor) for all fixes and features.
  • Link changes to a GitHub issue and reference it in commit messages (e.g., feat(#123): short description).
  • Architecture changes require an ADR under docs/adr or docs/wiki/adr (see ADR‑0014 as reference).

Related Docs

  • Repo split plan: docs/Split RenderX and Plugins out of MusicalConductor ( keep core; deprecate E2E here - align with ADR‑0014).md
  • ADR‑0014 (Manifest‑Driven Panel Slot Plugins): external link above

License

MIT