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

module-cop

v0.1.2

Published

A module to enforce blacklist & whitelists on the modules permitted for execution

Readme

Node Module Cop

Project Url: https://github.com/rorymurphy/module-cop

About

When building an application that allows any code to be executed that comes from an untrusted source (e.g. a plugin, or user code submitted by a user), it becomes a difficult problem to limit the set of things that the untrusted code can do. Luckily, to do almost anything in JavaScript a module must be loaded via require statement. Node Module Cop takes advantage of this to enable code sandboxing by controlling which modules it is allowed to load. The set of modules permissible to load can be controlled through whitelist/blacklist and, additionally, substitutions can be specified to return an alternate object when a given module is required.

vs. Other Solutions

The distinguishing factor of Node Module Cop is its unobtrusiveness. Where other solutions are implemented in ways that make them incompatible with other plugins that hook into the Module loading system, Node Module Cop maintains compatibility.

Usage

Using Node Module Cop is a breeze - simply create your cop, configure the whitelist and/or blacklist, and call enforce passing in the code block you want sandboxed.

import {ModuleCop, EnforcementLevel} from 'module-cop';

var cop = new ModuleCop();
cop.enforcementLevel = EnforcementLevel.WHITELIST_ONLY;
cop.addToWhitelist('events');
cop.enforce( () => require('untrusted.js'));

Properties

| Name | Type | Description | | ---- | ---- | ----------- | | enforcementLevel | int (enumerated by EnforcementLevel) | Determines the method of enforcement: | | | | WHITELIST_ONLY: Strictly limits module loading to those specified in the whitelist, ignoring the blacklist | | | | BLACKLIST_ONLY: Allows loading of any module except those specified on the blacklist, ignoring the whitelist | | | | WHITELIST_PRECEDENCE: Blocks all modules on the blacklist, unless referenced by a whitelisted module. This is useful when you want to permit a module that internally requires access to a lower-level sensitive module (e.g. the 'fs' module). | | whitelist | Array of strings | A read-only view into the current items on the whitelist | | blacklist | Array of strings | A read-only view into the current items on the blacklist | | substitutions | Object | A read-only key-value map representing any module substitutions |

Methods

| Name | Arguments | Description | | ---- | --------- | ----------- | | addToBlacklist | moduleName | Adds a module to the blacklist. | | removeFromBlacklist | moduleName | Removes a module from the blacklist. | | addToWhitelist | moduleName | Adds a module to the whitelist | | removeFromWhitelist | moduleName | Removes a module from the whitelist | | addModuleSubstitution | moduleName, substitute | Adds a module to the set of substitutions | | removeModuleSubstitution | moduleName | Removes a module from the set of substitutions | | enforce | callback | Enforces the rules defined for the Module Cop instance for the block of code passed in through the callback argument |