New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@dcmox/moxy-tasks

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dcmox/moxy-tasks

Task Scheduler

  • 0.5.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Moxy Task Scheduler

MoxyTaskScheduler is a task/job scheduler class. Define a set of tasks (Functions or Web Workers) with scheduled times, pass them into MoxyTaskScheduler, and let it do its job.

Class Methods

  • constructor(tasks: IMoxyTasks[]) - Specify the tasks you want to run on initialization
  • start() - Starts the task scheduler
  • stop() - Stops the task scheduler
  • getTasks() - Retrieves the current list of tasks
  • getWorkers() - Retrieves the list of workers spawned
  • add(task: IMoxyTask, interrupt: boolean = false) - Adds a task to the task queue. Setting interrupt to true will cause the queue pointer to reset back to the highest priority item after sorting
  • remove(labelOrId: string, date?: Date) - Removes a task from the task queue
  • next() - Increase the queue pointer
  • previous() - Decrease the queue pointer
  • peek() - Retrieve the next task in the queue
  • rewind() - Resets the queue pointer back to the first item in the queue
  • sort() - Sort the tasks by priority. Done automatically on intialization. Sort causes a rewind() event to occur
  • sortSchedule(task: IMoxyTask) - Sorts the scheduled times in a task, this is done automatically
  • errorLogs() - Retrieve error logs associated with running tasks or web workers

Interfaces

interface IMoxyTask {
    _id?: string
    label: string,
    created?: Date,
    priority?: number,
    retryLimit?: number,
    retryInterval?: number,
    schedule?: Date[],
    task: (() => boolean) | string, // Function or Worker path
    workerInit?: (worker: Worker) => any, // On worker creation, this function will execute if available
    workerTask?: any, // Used to store spawned worker internally.
    workerOpts?: any // Second parameter in new Worker(workerPath, [opts])
}

interface IMoxyTaskSchedulerOptions {
    defaultTime?: number = 1, // Default time in minutes task will run if no scheduled dates
    idleCooldown?: number = 2000, // Task scheduler will pause for X milliseconds between executing Y tasks
    stopAfterEmptyQueue?: boolean = false, // Task scheduler will complete after queue is empty if true, otherwise will keep listening until terminated manually
    taskLimit?: number = 100, // Not really a limit, sets the starting priority level to this number. Higher priority tasks run first
    tasksPerIdle?: number = 2, // Number of tasks inspected between idle time.
}

interface IMoxyCronOptions {
    unit?: string, //"seconds" | "minutes" | "hours" | "days" | "weeks"
    interval: number
}

Usage

const MoxyTaskScheduler = require('../moxy-tasks').MoxyTaskScheduler

const d = new Date()
d.setMinutes(d.getMinutes() + 1)

const ds = new Date()
ds.setSeconds(d.getSeconds() + 10)

const jobs = [
    {
        label: 'Hi',
        task: () => {
            console.log('Hello World!')
            return true
        },
    },
    {
        label: 'Blah',
        task: () => {
            console.log('Blahh')
            return true
        },
    },
    {
        label: 'Hmmm',
        schedule: [new Date(), d, ds],
        task: () => {
            console.log('hmmmm')
            return true
        },
    },
    {
        label: 'Worker',
        schedule: [new Date(), d, ds],
        task: './workerTest.js',
        workerInit(worker: Worker): void {
            console.log('init')
        },
    },
    {
        label: 'Cron',
        cron: {
            unit: 'seconds', // 'seconds' | 'minutes' | 'hours' | 'days' | 'weeks'
            interval: 1,
        }
        task: './workerTest.js',
        workerInit(worker: Worker): void {
            console.log('init')
        },
    },
]

const scheduler = new MoxyTaskScheduler(jobs)
scheduler.start() // Start monitoring and processing tasks

Keywords

FAQs

Package last updated on 12 Feb 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc