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

@package-uploader/core

v1.8.34

Published

Patch and upload Rise courses to LMS platforms

Readme

@package-uploader/core

Upload and manage Rise course packages on LMS platforms with a web UI and optional auto-patching.

Features

  • Web UI: Browse folders, upload courses, manage documents and shared links
  • Course upload: Upload SCORM, cmi5, xAPI packages with drag-and-drop
  • Thin Pack links: Auto-create LMS thin pack links on upload
  • Version management: Upload new versions to existing documents
  • Auto-patching: Automatically patch courses with @patch-adams/core
  • Feedback widget: Inject feedback forms into patched courses

Quick Start

Run the Server

# Install globally
npm install -g @package-uploader/core

# Create .env file
cat > .env << EOF
UPLOADER_BASE_URL=https://your-lms.bravais.com
UPLOADER_USERNAME=your-username
UPLOADER_PASSWORD=your-password
PORT=3002
EOF

# Start the server
package-upload-server

Open http://localhost:3002 to access the web UI.

Using npx (no install)

npx @package-uploader/core server

Web UI Features

Browse Page

  • Navigate folder hierarchy
  • View documents with metadata
  • Expand documents to see details and shared links
  • Create thin pack and shared links
  • Copy launch URLs to clipboard

Upload Modal

  • Drag-and-drop file upload
  • Auto-create LMS Thin Pack link (toggle, default ON)
  • Auto-create Shared Link (toggle, default OFF)
  • Custom link names with auto-generated slugs

Configuration

Environment Variables

# Required - Bravais LMS connection
UPLOADER_BASE_URL=https://your-lms.bravais.com
UPLOADER_USERNAME=your-username
UPLOADER_PASSWORD=your-password

# Optional - Server settings
PORT=3002
DEFAULT_FOLDER_ID=12345

# Optional - CORS for split-domain deployment
CORS_ORIGINS=https://company.com,https://www.company.com

# Optional - Auto-patching (requires @patch-adams/core)
PATCH_ENABLED=true
PATCH_REMOTE_DOMAIN=https://cdn.example.com/rise-overrides

Auto-Patching with @patch-adams/core

Install the optional peer dependency to enable auto-patching:

npm install @patch-adams/core @patch-adams/plugin-feedback

When enabled, uploaded courses are automatically patched with:

  • LRS bridge for xAPI tracking
  • Feedback widget (configurable)
  • Custom CSS/JS injections

Split-Domain Deployment

For deploying the UI on a main domain with the API on a subdomain:

1. Build UI for Static Hosting

cd ui
VITE_API_URL=https://api.company.com/api npm run build
# Deploy ui/dist/ to your static host

2. Configure CORS on API Server

CORS_ORIGINS=https://company.com,https://www.company.com

Programmatic Usage

import { PackageUploaderClient } from '@package-uploader/core';

const client = new PackageUploaderClient({
  baseUrl: 'https://your-lms.bravais.com',
  username: 'your-username',
  password: 'your-password',
});

// Upload a course
const result = await client.uploadCourse(fileBuffer, 'course.zip', {
  folderId: '12345',
  title: 'My Course',
});

// Create a thin pack link
await client.createSharedLink(result.documentId, {
  name: 'My Course - LMS Thin Pack',
  isPublic: true,
  isForThinPackage: true,
});

API Reference

Folders

client.listFolders()
client.getFolder(folderId)
client.listSubfolders(folderId)

Documents

client.listDocuments({ folderId, filterText })
client.getDocument(documentId)
client.getDocumentVersions(documentId)

Shared Links

client.listSharedLinks(documentId)
client.createSharedLink(documentId, {
  name: 'Link Name',
  isPublic: true,
  isForThinPackage: true,
})

Upload

client.uploadCourse(buffer, filename, { folderId, title })
client.uploadVersion(buffer, filename, { documentId, note })

CLI Commands

# Start the web server
package-upload-server

# Upload a course (CLI)
package-upload upload course.zip --folder 12345

# Upload a new version
package-upload update course.zip --document-id 67890

Development

# Clone and install
git clone https://github.com/npmbuilder/package-uploader.git
cd package-uploader
npm install

# Build UI
npm run build:ui

# Build TypeScript
npm run build

# Run server in development
npm run server

License

MIT