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

@memberjunction/ng-record-process-studio

v5.48.0

Published

MemberJunction: Bulk Operations studio — generic, reusable Angular UI for authoring, running, and auditing Record Processes (rules-driven bulk updates). Consumed by MJExplorer's Bulk Operations app or any MJ app.

Readme

@memberjunction/ng-record-process-studio

The generic Bulk Operations studio — reusable Angular UI for authoring, running, and auditing Record Processes (rules-driven bulk operations). MJExplorer's Bulk Operations app is a thin host over these components, but any MJ Angular app can drop them in.

A "Record Process" is a saved, reusable operation that runs over a set of an entity's records. The flagship work type is FieldRules — declarative rules that set fields from a fixed value, another field, a formula, an entity lookup, or an AI prompt — always previewed as an exact per-record diff before any write happens.

Components

| Component | Selector | Purpose | |---|---|---| | RecordProcessStudioComponent | <mj-record-process-studio> | The hub — list / search / create / edit / run bulk operations. | | RecordProcessEditorComponent | <mj-record-process-editor> | Author one process: basics + target entity + scope + the embedded visual rules builder + an inline dry-run Preview. | | RecordProcessHistoryComponent | <mj-record-process-history> | Run history with per-record drill-in (the field diff persisted on each Process Run Detail). |

All three are standalone, OnPush, extend BaseAngularComponent (so they accept [Provider] for multi-provider), use --mj-* design tokens only (light + dark), and import nothing from @angular/router (Generic-package rule).

Quick use

<!-- the whole hub -->
<mj-record-process-studio [Provider]="ProviderToUse"></mj-record-process-studio>

<!-- just the authoring editor for one record (e.g. embedded in an entity form) -->
<mj-record-process-editor [Record]="record" [ShowToolbar]="false" [Provider]="ProviderToUse"></mj-record-process-editor>

<!-- run history, optionally scoped to one process -->
<mj-record-process-history [RecordProcessID]="id" [Provider]="ProviderToUse"></mj-record-process-history>

Call LoadRecordProcessStudio() once from your app bootstrap to keep the components through tree-shaking.

How it composes

ng-record-process-studio
   ├─ embeds <mj-field-rules-builder>   ← @memberjunction/ng-entity-action-ux (visual rule authoring)
   ├─ embeds <mj-ai-prompt-selector>    ← (grouped AI-prompt picker, via the builder)
   ├─ mounts  RecordProcessRunnerUX     ← @memberjunction/ng-entity-action-ux (dry-run → confirm runner)
   └─ runs    RunRecordProcess          ← @memberjunction/graphql-dataprovider → RecordProcessExecutor engine

The studio is intentionally thin orchestration over already-tested primitives: the rule engine (@memberjunction/global field-rules, 25 tests), its metadata-aware layer (@memberjunction/core EntityFieldRules), the transform plugins (@memberjunction/field-rules-transforms, 8 tests), the builder/runner/serialization (@memberjunction/ng-entity-action-ux, 23 tests), and the executor + scope-override (@memberjunction/record-set-processor, 24 facade tests). The studio adds the list/edit/run/history surfaces around them.

The editor, embedded two ways

  • In the Bulk Operations appRecordProcessStudioComponent shows it with its Save / Preview toolbar.
  • In the custom MJ: Record Processes entity formShowToolbar=false; the form's <mj-record-form-container> owns Save while the editor mutates the record in place. So editing a process from anywhere in Explorer gets the same visual rules builder instead of a raw Configuration JSON field.

Conventions held

Standalone + inject() · @if/@for/@switch · PascalCase public members · --mj-* tokens only · multi-provider via [Provider] / ProviderToUse · no Router imports · self-contained chrome (each component owns its own toolbar so it drops into any host).