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

@benjamindehli/logic-pro-script-compiler

v1.1.1

Published

Compiles JavaScript files to .pst files for Logic Pro Scripter plugin

Readme

@benjamindehli/logic-pro-script-compiler

Compiles JavaScript files to .pst files for the Logic Pro Scripter MIDI plugin.

Logic Pro's Scripter plugin uses a binary .pst format to store scripts. This tool takes standard .js source files, transpiles them for compatibility with Logic Pro's JavaScript engine, and packages them into the correct binary format, letting you write and maintain scripts in a modern editor with your usual tooling.

Requirements

  • Node.js >= 16

Usage

One-off with npx

Run without installing, passing your own input and output directories:

npx @benjamindehli/logic-pro-script-compiler -i ./src -o ./build

Note: Do not run this from inside the logic-pro-script-compiler package directory itself. Run it from your own project.

Global install

npm install -g @benjamindehli/logic-pro-script-compiler
logic-pro-script-compiler -i ./src -o ./build

Options

| Flag | Alias | Description | Default | | ---- | ----- | ----------- | ------- | | --input | -i | Directory containing .js source files | ./src | | --output | -o | Directory to write .pst files to | ./build | | --help | -h | Show help | |

How it works

  1. Transpile — Each .js file is passed through Babel with the following transforms:
    • const/letvar (block scoping)
    • Optional chaining (?.) → equivalent conditional expressions
    • Spread syntax (...) → explicit concatenation
  2. Package — The transpiled source is wrapped in a binary bplist structure and written into the .pst chunk format that Logic Pro expects.

The output directory mirrors the structure of the input directory, so nested folders are preserved.

Example

Given this source tree:

src/
  DigiTech Whammy/
    MIDI Note to Whammy Pitch.js
  Elektron SidStation/
    Editor.js

Running:

npx @benjamindehli/logic-pro-script-compiler -i ./src -o ./build

Produces:

build/
  DigiTech Whammy/
    MIDI Note to Whammy Pitch.pst
  Elektron SidStation/
    Editor.pst

Each .pst file can be opened directly in the Logic Pro Scripter plugin.

Programmatic API

The package also exposes its internals for use in Node.js scripts:

const { buildBplist, transpile, compileToPst, processDirectory } = require("@benjamindehli/logic-pro-script-compiler");

transpile(jsSource) → string

Transpiles a JavaScript string using Babel. Returns the transpiled source code.

buildBplist(jsBytes) → Buffer

Wraps a UTF-8 Buffer of transpiled JavaScript in the bplist binary format. Throws if the script exceeds 65535 bytes.

compileToPst(jsSource) → Buffer

Transpiles and packages a JavaScript string into a complete .pst Buffer ready to be written to disk.

processDirectory(srcDir, buildDir)

Recursively walks srcDir, compiles every .js file found, and writes the resulting .pst files to the mirrored path under buildDir. Dotfiles and non-.js files are skipped.

License

GPL-3.0 © Benjamin Dehli