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 🙏

© 2024 – Pkg Stats / Ryan Hefner

secure-scheduler

v1.2.0

Published

Secure scheduler is an easy to use module for scheduling events via end-user input using sandboxed method execution.

Downloads

9

Readme

Secure Scheduler

Secure scheduler is an easy to use module for scheduling events via end-user input using sandboxed method execution.

As such, the filesystem is not exposed in the event of a vulnerability. Hence, users can safely execute JavaScript code in Jobs.

Installation

Install with npm i secure-scheduler

Usage

Create a new scheduler as follows

const Scheduler = require('secure-scheduler');
const scheduler = new Scheduler('./jobs.json');

where the parameter is the storage path for jobs.

Functions can then be queued by passing a Function and Date or cron expression to the Scheduler.add method

scheduler.add(
  () => {
    // Do stuff
  },
  new Date(2018, 06, 05)
);
// returns Job { method: . . ., date: Date, id: "job_id" }

Cron expressions are also valid in place of fixed dates

scheduler.add(
  () => {
    // Do stuff
  },
  '*/30 * * * *'
);

Scheduler.add returns an id (UUID-V1 formatted) to refer to the Job.

Jobs/scheduled events can be cancelled by calling Scheduler.cancel with the job id scheduler.cancel("[JOB ID]")

Job IDs can be retrieved as an array with Scheduler.jobs scheduler.jobs // [id, id, . . .]

Allowing access to Node.JS modules

Modules can be exposed using identical option parameters to vm2.

They can be defined globally in the Scheduler constructor

const scheduler = new Scheduler('./jobs.json', {
    require: {
      builtin: ['path']
    }
})

Or they can be defined on Scheduler.add

scheduler.add(() => {
    return require('path').extname('index.html');
    },
    new Date(2018, 06, 05),
    {
      require: {
        builtin: ['path']
      }
    }
)

vm2 options defined in Scheduler.add take precedent over globally defined options in the constructor

Take care in exposing modules Exposing the built in fs module can lead to irreparable harm to your filesystem should an end user be able to invoke it. Only expose what is needed for your module to function. If needed, stub your modules with vm2 mock syntax.