A fast, robust and extensible distributed task/job queue for Node.js, powered by Redis.

Overview

Conveyor MQ

A fast, robust and extensible distributed task/job queue for Node.js, powered by Redis.

Tests npm Coverage Status

Introduction

Conveyor MQ is a general purpose, distributed task/job queue for Node.js, powered by Redis.

Conveyor MQ implements a reliable queue which provides strong guarantees around the reliability of tasks in the event of network or server errors, for example. Conveyor MQ offers at-least-once and exactly-once task delivery through the use of error or stall task retries. Conveyor MQ is implemented using a highly efficient and performant, polling-free design making use of brpoplpush from Redis.

import { createManager, createWorker } from 'conveyor-mq';

const queueName = 'my-queue';
const redisConfig = { host: '127.0.0.1', port: 6379 };

const manager = createManager({ queue: queueName, redisConfig });
manager.enqueueTask({ data: { x: 1, y: 2 } });

const worker = createWorker({
  queue: queueName,
  redisConfig,
  handler: ({ task }) => {
    console.log(`Processing task: ${task.id}`);
    return task.data.x + task.data.y;
  },
});

Features

  • Task management
    • Retry tasks on error or stall with customizable retry strategies
    • Tasks which expire
    • Task execution timeouts
    • Delayed/Scheduled tasks
    • Task progress
  • Events
    • Task, Queue and Worker events
  • Concurrent worker processing
  • Fast & efficient, polling-free design
  • Highly extensible design with plugins
  • Task rate limits
  • Async/await/Promise APIs
  • Robust
  • High performance

Table of Contents

  1. Introduction
  2. Features
  3. Table of Contents
  4. Quick Start Guide
  5. Overview
  6. API Reference
  7. Examples
  8. Roadmap
  9. Contributing
  10. License

Installation

npm:

npm install --save conveyor-mq

yarn:

yarn add conveyor-mq

You will also need Redis >=3.2

Quick Start Guide

import {
  createManager,
  createWorker,
  createOrchestrator,
  createListener,
} from 'conveyor-mq';

const redisConfig = { host: '127.0.0.1', port: 6379 };
const queue = 'myQueue';

// Create a manager which is used to add tasks to the queue, and query various properties of a queue:
const manager = createManager({ queue, redisConfig });

// Add a task to the queue by calling manager.enqueueTask:
const task = { data: { x: 1, y: 2 } };
manager.enqueueTask(task);

// Schedule a task to be added to the queue later by calling manager.scheduleTask:
const scheduledTask = {
  data: { x: 1, y: 2 },
  enqueueAfter: new Date('2020-05-03'),
};
manager.enqueueTask(scheduledTask);

// Create a listener and subscribe to the task_complete event:
const listener = createListener({ queue, redisConfig });
listener.on('task_complete', ({ event }) =>
  console.log('Task complete:', event.task.id),
);

// Create a worker which will process tasks on the queue:
const worker = createWorker({
  queue,
  redisConfig,
  handler: ({ task }) => {
    return task.data.x + task.data.y;
  },
});

// Create an orchestrator to monitor the queue for stalled tasks, and enqueue scheduled tasks:
const orchestrator = createOrchestrator({ queue, redisConfig });

Overview

Tasks

The most basic implementation of a task is an object with a data key:

const myTask = { data: { x: 1, y: 2 } };

Task life cycle

A task will move through various statuses throughout its life cycle within the queue:

scheduled: The task has been scheduled to be enqueued at a later time. (Delayed/Scheduled task)

queued: The task has been enqueued on the queue and is pending processing by a worker.

processing: The task has picked up by a worker and is being processed.

success: The task has been successfully processed by a worker.

failed: The task has been unsuccessfully processed by a worker and has exhausted all error & stall retires.

Task status flow diagram:

                                   -> success
                                 /
scheduled -> queued -> processing
^          ^                    \
|--- or ---|----------< (Stall & error reties)
                                  \
                                    -> failed

*Note: success and failed statuses both represent the final outcome of a task, after all stall/error retrying has been attempted and exhausted.

Manager

A manager is responsible for enqueuing tasks, as well as querying various properties of a queue. Create a manager by calling createManager and passing a queue and redisConfig parameter.

Add a task to the queue by calling manager.enqueueTask with an object { task: { data: x: 1, y: 2} }.

For more information, see createManager, Enqueuing tasks

import { createManager } from 'conveyor-mq';

// Create a manager instance:
const manager = createManager({
  queue: 'my-queue',
  redisConfig: { host: 'localhost', port: 6379 },
});

// Add a task to the queue:
await manager.enqueueTask({ data: { x: 1, y: 2 } });

// Get a task:
const task = await manager.getTaskById('my-task-id');
/*
  task = {
    ...
    status: 'queued',
    data: {
      x: 1,
      y: 2,
    },
    ...
  }
*/

Enqueuing tasks

Tasks are added to a queue (enqueued) by using a manager's enqueueTask function.

import { createManager } from 'conveyor-mq';

const myTask = {
  // A custom task id. If omitted, an id will be auto generated by manager.enqueueTask.
  id: 'my-custom-id',

  // Custom task data for processing:
  data: { x: 1, y: 2 },

  // The maximum number of times a task can be retried after due to an error:
  errorRetryLimit: 3,

  // The maximum number of times a task can be retried being after having stalled:
  stallRetryLimit: 3,

  // The maximum number of times a task can be retired at all (error + stall):
  retryLimit: 5,

  // The maximum time a task is allowed to execute for after which it will fail with a timeout error:
  executionTimeout: 5000,

  // Custom retry strategy:
  retryBackoff: { strategy: 'linear', factor: 10 },

  // Schedules a task to only be enqueued after this time:
  enqueueAfter: new Date('2020-05-01'),

  // Time after which a task will expire and fail if only picked up by a worker after the time:
  expiresAt: new Date('2020-05-06'),

  // Time after an acknowledgement after which a task will be considered stalled and re-enqueued by an orchestrator:
  stallTimeout: 5000,

  // Frequency at which a task is acknowledged by a worker when being processed:
  taskAcknowledgementInterval: 1000,
};

const manager = createManager({
  queue: 'my-queue',
  redisConfig: { host: 'localhost', port: 6379 },
});

const enqueuedTask = await manager.enqueueTask(myTask);

Task retries

Conveyor MQ implements a number of different task retry mechanisms which can be controlled by various task properties.

errorRetryLimit controls the maximum number of times a task is allowed to be retried after encountering an error whilst being processed.

// Create a task which can be retried on error a maximum of 2 times:
const task = { data: { x: 1, y: 2 }, errorRetryLimit: 2 };

errorRetries is the number of times a task has been retried because of an error.

// See how many times a task has been retried due to an error:
const task = await manager.getTaskById('my-task-id');
/*
  task = {
    ...
    id: 'my-task-id',
    errorRetries: 2,
    ...
  }
*/

stallRetryLimit controls the maximum number of times a task is allowed to be retried after encountering becoming stalled whilst being processed.

// Create a task which can be retried on stall a maximum of 2 times:
const task = { data: { x: 1, y: 2 }, stallRetryLimit: 2 };

stallRetries is the number of times a task has been retried after having stalled:

// See how many times a task has been retried due to an error:
const task = await manager.getTaskById('my-task-id');
/*
  task = {
    ...
    id: 'my-task-id',
    stallRetries: 2,
    ...
  }
*/

retryLimit controls the maximum number of times a task is allowed to be retried after either stalling or erroring whilst being processed.

// Create a task which can be retried on stall or error a maximum of 2 times:
const task = { data: { x: 1, y: 2 }, retryLimit: 2 };

retries is the number of times a task has been retried in total (error + stall retries)

// See how many times a task has been retried in total:
const task = await manager.getTaskById('my-task-id');
/*
  task = {
    ...
    id: 'my-task-id',
    retries: 2,
    ...
  }
*/

Worker

A worker is responsible for taking enqueued tasks off of the queue and processing them. Create a worker by calling createWorker with a queue, redisConfig and handler parameter.

The handler parameter should be a function which receives a task and is responsible for processing the task. The handler should return a promise which should resolve if the task was successful, or reject if failed.

For more information, see createWorker and Processing tasks

import { createWorker } from 'conveyor-mq';

// Create a worker which will start monitoring the queue for tasks and process them:
const worker = createWorker({
  queue: 'my-queue',
  redisConfig: { host: 'localhost', port: 6379 },
  // Pass a handler which receives tasks, processes them, and then returns the result of a task:
  handler: ({ task }) => {
    return task.data.x + task.data.y;
  },
});

Processing tasks

Tasks are processed on the queue by workers which can be created using createWorker. Once created, a worker will begin monitoring a queue for tasks to process using an efficient, non-polling implementation making use of the brpoplpush Redis command.

A worker can paused and resumed by calling worker.pause and worker.start respectively.

import { createWorker } from 'conveyor-mq';

const worker = createWorker({
  // Queue name:
  queue: 'my-queue',

  // Redis configuration:
  redisConfig: { host: 'localhost', port: 6379 },

  // A handler function to process tasks:
  handler: async ({ task, updateTaskProgress }) => {
    await updateTaskProgress(100);
    return 'some-task-result';
  },

  // The number of concurrent tasks the worker can processes:
  concurrency: 10,

  // The retry delay when retrying a task after it has errored:
  getRetryDelay: ({ task }) => (task.retries + 1) * 100,

  // Task success callback:
  onTaskSuccess: ({ task }) => {
    console.log('Task processed successfully', result);
  },

  // Task error callback:
  onTaskError: ({ task, error }) => {
    console.log('Task had an error', error);
  },

  // Task fail callback:
  onTaskFailed: ({ task, error }) => {
    console.log('Task failed with error', error);
  },

  // Worker idle callback. Called when the worker becomes idle:
  onIdle: () => {
    console.log('worker is now idle and not processing tasks');
  },

  // Amount of time since processing a task after which the worker is considered idle and the onIdle callback is called.
  idleTimeout: 250,

  // Worker ready callback, called once a worker is ready to start processing tasks:
  onReady: () => {
    console.log('Worker is now ready to start processing tasks');
  },

  // Control whether the worker should start automatically, else worker.start() must be called manually:
  autoStart: true,

  // Remove tasks once they are processed successfully
  removeOnSuccess = false,

  // Remove tasks once they are fail to be processed successfully
  removeOnFailed = false,
});

Orchestrator

An orchestrator is responsible for various queue maintenance operations including re-enqueueing stalled tasks, and enqueueing delayed/scheduled tasks. Create an orchestrator by calling createOrchestrator with a queue and redisConfig parameter. The orchestrator will then begin monitoring the queue for stalled tasks and re-enqueueing them if needed, as well as enqueueing scheduled tasks.

For more information, see createOrchestrator and Stalling tasks

import { createOrchestrator } from 'conveyor-mq';

// Create an orchestrator:
const orchestrator = createOrchestrator({
  queue: 'my-queue',
  redisConfig: { host: 'localhost', port: 6379 },
});

Stalled tasks

As part of the at-least-once task delivery strategy, Conveyor MQ implements stalled or stuck task checking and retrying.

While a worker is busy processing a task, it will periodically acknowledge that it is still currently processing the task. The interval at which a processing task is acknowledged by a worker during processing at is controlled by Task.taskAcknowledgementInterval and otherwise falls back to Worker.defaultTaskAcknowledgementInterval.

A task is considered stalled if while it is being processed by a worker, the worker fails to acknowledge that it is currently working on the task. This situation occurs mainly when either a worker goes offline or crashes unexpectedly whilst processing a task, or if the Node event loop on the worker becomes blocked while processing a task.

The time since a task was last acknowledged after which it is considered stalled is controlled by Task.stallInterval and otherwise falls back to Worker.defaultStallInterval.

Note: An orchestrator is required to be running on the queue which will monitor and re-enqueue any stalled tasks. It is recommended to have only a single orchestrator run per queue to minimize Redis overhead, however multiple orchestrators can be run simultaneously.

Scheduled tasks

Tasks can be scheduled to be added to the queue at some future point in time. To schedule a task, include a enqueueAfter property on a task and call manager.scheduleTask:

const scheduledTask = {
  data: { x: 1, y: 2 },
  enqueueAfter: new Date('2020-05-15'),
};

const { task: enqueuedTask } = await manager.scheduleTask(scheduledTask);
/*
  enqueuedTask = {
    ...
    data: { x: 1, y: 2 },
    status: 'scheduled',
    enqueueAfter: '2020-05-15',
    ...
  }
*/

Note: An orchestrator is required to be running on the queue which will monitor and enqueue any scheduled tasks. It is recommended to have only a single orchestrator run per queue to minimize Redis overhead, however multiple orchestrators can be run simultaneously.

Listener

A listener is responsible for listening and subscribing to events. Use listener.on to subscribe to various task, queue and worker related events.

For more information, see createListener and Event

import { createListener } from 'conveyor-mq';

// Create a listener:
const listener = createListener({
  queue: 'my-queue',
  redisConfig: { host: 'localhost', port: 6379 },
});

// Listen for the 'task_complete' event:
listener.on('task_complete', ({ event }) => {
  console.log(`Task ${event.task.id} has completed!`),
});

Plugins

Conveyor MQ is highly extensible through its plugin & hooks architecture. The createManager, createWorker and createOrchestrator functions have an optional hooks parameter through which various hook functions can be passed to hook into the various queue lifecycle actions. Plugins can be created by implementing hook functions, and then calling registerPlugins to register plugins.

Create a plugin

A plugin is a simple object with keys corresponding to hook names, and values of functions.

import { registerPlugins } from 'conveyor-mq';

// Create a simple plugin.
const myPlugin = {
  onBeforeEnqueueTask: ({ task }) => console.log(task),
  onAfterEnqueueTask: ({ task }) => console.log(task),
  onBeforeTaskProcessing: ({ taskId }) => console.log(taskId),
  onAfterTaskProcessing: ({ task }) => console.log(task),
  onAfterTaskSuccess: ({ task }) => console.log(task),
  onAfterTaskError: ({ task }) => console.log(task),
  onAfterTailFail: ({ task }) => console.log(task),
};

// Register the plugin and unpack new createManager and createWorker functions.
const { createManager, createWorker } = registerPlugins(myPlugin);

const queue = 'my-queue';
const redisConfig = { host: 'localhost', port: 6370 };

// Create a manager which is registered with myPlugin.
const manager = createManager({ queue, redisConfig });

// Create a worker which is registered with myPlugin.
const manager = createManager({
  queue,
  redisConfig,
  handler: ({ task }) => {
    // Do processing
    return 'some-result';
  },
});

See the Plugins example for more information.

Sharing Redis connections

Redis connections can be shared between a manager, worker and orchestrator as an optimization to reduce the total number of Redis connections used. This is particularly useful to do when your Redis server is hosted and priced based on the number of active connections, such as on Heroku or Compose.

The functions createManager, createWorker and createOrchestrator each take an optional redisClient parameter where a shared Redis client can be passed. The shared Redis client must first be configured with the custom Lua scripts by calling loadLuaScripts({ client }).

See the Shared redis client example for more details.

Debugging

Conveyor MQ makes use of the debug package for debug logging.

Enable Conveyor MQ debug logging by setting the DEBUG environment variable to conveyor-mq:* and then executing your project/app in the same shell session:

export DEBUG=conveyor-mq:*
node ./my-app.js

API Reference

Manager

Worker

createManager

Creates a manager instance which is responsible for adding tasks to the queue, as well as querying various properties of the queue. Returns a promise which resolves with a manager instance.

import { createManager } from 'conveyor-mq';

const manager = createManager({
  // Queue name.
  queue: 'my-queue',
  // Redis configuration
  redisConfig: {
    host: 'localhost',
    port: 6379,
    db: 0,
    password: 'abc',
    url: 'redis://some-password@localhost:6371/0',
  },
  // Pass in a shared redis instance.
  redisClient: sharedRedisInstance,
});

manager.enqueueTask

Enqueues a task on the queue. Returns a promise which resolves with a TaskResponse.

const task = {
  id: 'my-custom-id', // A custom task id. If omitted, an id (uuid string) will be auto generated by manager.enqueueTask.
  data: { x: 1, y: 2 }, // Custom task data.
  errorRetryLimit: 3, // The maximum number of times a task can be retried after due to an error.
  stallRetryLimit: 3, // The maximum number of times a task can be retried being after having stalled.
  retryLimit: 5, // The maximum number of times a task can be retired at all (error + stall).
  executionTimeout: 5000, // The maximum time a task is allowed to execute for after which it will fail with a timeout error.
  retryBackoff: { strategy: 'linear', factor: 10 }, // Custom retry strategy.
  expiresAt: new Date('2020-05-06'), // Time after which a task will expire and fail if only picked up by a worker after the time.
  stallTimeout: 5000, // Time after an acknowledgement after which a task will be considered stalled and re-enqueued by an orchestrator.
  taskAcknowledgementInterval: 1000, // Frequency at which a task is acknowledged by a worker while being processed.
};

const {
  task: enqueuedTask, // The enqueued task is returned.
  onTaskComplete, // A function which returns a promise that resolves once the task is complete.
} = await manager.enqueueTask(task);

manager.enqueueTasks

Enqueues multiple tasks in a single transaction. Returns a promise which resolves with a list of TaskResponse's.

const task1 = { data: { x: 1 } };
const task2 = { data: { y: 2 } };

const [
  { task: enqueuedTask1 },
  { task: enqueuedTask2 },
] = await manager.enqueueTasks([task1, task2]);

manager.scheduleTask

Schedules a task to be enqueued at a later time. Returns a promise which resolves with a TaskResponse.

const myScheduledTask = {
  data: { x: 1, y: 2 },
  enqueueAfter: new Date('2020-05-30'),
};

const {
  task, // Scheduled task.
  onTaskComplete, // A function which returns a promise that resolves on task complete.
} = await manager.scheduleTask(myScheduledTask);

manager.scheduleTasks

Schedules a task to be enqueued at a later time. Returns a promise which resolves with a list of TaskResponse's.

const myScheduledTask = {
  data: { x: 1, y: 2 },
  enqueueAfter: new Date('2020-05-30'),
};

const [{ task, onTaskComplete }] = await manager.scheduleTasks([
  myScheduledTask,
]);

manager.onTaskComplete

A function which takes a taskId and returns a promise that resolves with the task once the task has completed.

const task = await manager.enqueueTask({ data: { x: 1, y: 2 } });
await manager.onTaskComplete(task.id);
console.log('Task has completed!');

manager.getTaskById

Gets a task from the queue. Returns a promise that resolves with the task from the queue.

const task = await manager.getTaskById('my-task-id');

manager.getTasksById

Gets multiple tasks from the queue in a transaction. Returns a promises that resolves with a list of tasks.

const tasks = await manager.getTasksById(['task-id-1', 'task-id-2']);

manager.getTaskCounts

Gets the count of tasks per status. Returns a promise that resolves with the counts of tasks per status.

const {
  scheduledCount,
  queuedCount,
  processingCount,
  successCount,
  failedCount,
} = await manager.getTaskCounts();

manager.getWorkers

Gets the workers connected to the queue. Returns a promise that resolves with a list of workers.

const workers = await manager.getWorkers();

manager.removeTaskById

Removes a given task from the queue by id. Returns a promise.

await manager.removeTaskById('some-task-id');

manager.pauseQueue

Pauses a queue.

await manager.pauseQueue();

manager.resumeQueue

Resumes a queue.

await manager.resumeQueue();

manager.setQueueRateLimit

Sets the rate limit of a queue. (100 tasks every 60 seconds)

await manager.setQueueRateLimit({ points: 100, duration: 60 });

manager.getQueueRateLimit

Gets the rate limit of a queue.

const rateLimit = await manager.getQueueRateLimit();
// rateLimit = { points: 100, duration: 60 }

manager.destroyQueue

Destroys all queue data and data structures. Returns a promise.

await manager.destroyQueue();

manager.quit

Quits a manager, disconnecting all redis connections and listeners. Returns a promise.

await manager.quit();

Worker

createWorker

A worker is responsible for taking enqueued tasks off of the queue and processing them. Create a worker by calling createWorker with at least a queue, redisConfig and handler parameter.

The handler parameter should be a function which receives a task and is responsible for processing the task. The handler should return a promise which should resolve if the task was successful, or reject if failed.

import { createWorker } from 'conveyor-mq';

// Create a worker which will start monitoring the queue for tasks and process them:
const worker = createWorker({
  queue: 'my-queue',
  redisConfig: { host: 'localhost', port: 6379 },
  // Pass a handler which receives tasks, processes them, and then returns the result of a task:
  handler: ({ task }) => {
    return task.data.x + task.data.y;
  },
});

All worker params:

import { createWorker } from 'conveyor-mq';

const worker = createWorker({
  // Queue name:
  queue: 'my-queue',

  // Redis configuration:
  redisConfig: { host: 'localhost', port: 6379 },

  // A handler function to process tasks.
  // If the handler function throws an error or returns a promise which rejects, the task will be considered to have errorerd and the thrown or rejected error will be set to the task's `error` field.
    // If the handler function returns a result, or returns a promise which resolves, the task will be considered successfully processed and the return or resolve value will be set to the task's `result` field.
  handler: async ({ task, updateTaskProgress }) => {
    await updateTaskProgress(100);
    return 'some-task-result';
  },

  // The number of concurrent tasks the worker can processes at a time:
  concurrency: 10,

  // The retry delay when retrying a task after it has errored or stalled:
  getRetryDelay: ({ task }) => (task.retries + 1) * 100,

  // Task success callback:
  onTaskSuccess: ({ task }) => {
    console.log('Task processed successfully', result);
  },

  // Task error callback:
  onTaskError: ({ task, error }) => {
    console.log('Task had an error', error);
  },

  // Task fail callback:
  onTaskFailed: ({ task, error }) => {
    console.log('Task failed with error', error);
  },

  // Worker idle callback. Called when the worker becomes idle:
  onIdle: () => {
    console.log('worker is now idle and not processing tasks');
  },

  // Amount of time since processing a task after which the worker is considered idle and the onIdle callback is called.
  idleTimeout: 250,

  // Worker ready callback, called once a worker is ready to start processing tasks:
  onReady: () => {
    console.log('Worker is now ready to start processing tasks');
  },

  // Control whether the worker should start automatically, else worker.start() must be called manually:
  autoStart: true,

  // Remove tasks once they are processed successfully
  removeOnSuccess = false,

  // Remove tasks once they are fail to be processed successfully
  removeOnFailed = false,
});

Examples

Simple example

Express example

Scheduled task example

Child/sub tasks example

Task types example

Shared redis client example

Plugins example

Roadmap

  • Improve documentation
  • Task priorities
  • Recurring tasks
  • Task rate limiting
  • Performance optimisations
  • Child process workers
  • Web UI

Contributing

See CONTRIBUTING.md

License

See LICENSE

Comments
  • Many changes

    Many changes

    Hello!

    A few days ago I looked at the project and got interested in it, seemed to be a better option than bee-queue. And I looked through the issues and made this PR.

    But this PR contains more things than that.

    • It seem to address this, at least the lua are sent to dist. https://github.com/conveyor-mq/conveyor-mq/issues/114
    • I completely addressed this. https://github.com/conveyor-mq/conveyor-mq/issues/68
    • I migrated the project from npm to pnpm which are very fast. and is the one I have been using in my projects. After trying to install packages using recent npm version, it that was complaining / giving errors.
    • I upgraded most packages, with some exceptions that has breaking changes, but they were partially upgraded, to the point that compatibility was still there.
    • I fixed type errors with and without additional checks.
    • Imports were re-ordered alphabetically.

    It could be worth upgrading to ioredis latest version, seems that is more stable but there are breaking changes. As for the p- starting dependencies, it is in the latest version that is usable in non-ESM projects. While the rest are up-to-date.

    Edit: I upgraded ioredis to v5, only small breaking changes, mostly in the typing.

    Edit2: There is a test that randomly fails. Been happening before I started the changes though. Sometimes I get consecutives test run all successful and sometimes consecutives 1 fail with that one below.

    createOrchestrator › createOrchestrator marks orphaned task as processing
    > 78 |     expect(await isTaskStalled({ taskId, queue, client })).toBe(true);
    

    It's up to you to accept or not. All tests seem to be passing.

    @jasrusable

    opened by dougg0k 20
  • dependencies cleanup

    dependencies cleanup

    Would you consider cleaning the project dependencies a bit? https://bundlephobia.com/[email protected]

    • all @types/ should go to devDependencies
    • consider ditching lodash (I suppose all of the used helper functions can be easily refactored into pure typescript)
    • maybe also find a way to reduce the dependency tree by replacing moment (it's actually the biggest dependency) with native Date and small helpers
    opened by falkenhawk 7
  • Solid start!

    Solid start!

    Hi Jason,

    Just wanted to say 'thank you' for your effort in setting up a reliable queue library. The NodeJS ecosystem is surprisingly limited when it comes to solid low-level libraries (e.g. networking, database drivers, etc), and yours will be a most welcome addition. Thanks!

    opened by eugene1g 6
  • Broken lua filepaths when transpiled/bundled

    Broken lua filepaths when transpiled/bundled

    Thank you for your work on this! I've enjoyed working with it so far.

    I'm having trouble bundling up my app, unfortunately. ts-node is the only thing I've managed to use to successfully start up while using conveyor-mq. I've been trying to use @vercel/ncc for running and building, but it's complaining about what looks like lua script path issues and a pretty generic cannot read property apply of undefined:

    // Cannot read property apply of undefined
    (node:65991) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 24)
    (node:65991) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'apply' of undefined
        at Object.module.exports.__webpack_modules__.7966.exports.callLuaScriptMulti (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/utils/redis.js:63:1)
        at Object.module.exports.__webpack_modules__.5059.exports.enqueueTaskMulti (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-task.js:66:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-tasks.js:49:1
        at arrayMap (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/lodash/lodash.js:639:1)
        at Function.map (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/lodash/lodash.js:9580:1)
        at Object.module.exports.__webpack_modules__.7941.exports.enqueueTasksMulti (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-tasks.js:48:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-tasks.js:64:1
        at step (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-tasks.js:33:1)
        at Object.next (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-tasks.js:14:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/actions/enqueue-tasks.js:8:1
    
    // lua issues
    (node:65991) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/4c6aaadb4085edb0fcc4f2b833290d23/mark-task-processing.lua'
        at Object.openSync (fs.js:462:3)
        at Object.readFileSync (fs.js:364:35)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:95:1
        at step (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:33:1)
        at Object.next (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:14:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:8:1
        at new Promise (<anonymous>)
        at module.exports.__webpack_modules__.5406.__awaiter (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:4:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:92:1
        at arrayEach (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/lodash/lodash.js:516:1)
    (node:65991) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 21)
    (node:65991) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/4c6aaadb4085edb0fcc4f2b833290d23/enqueue-scheduled-tasks.lua'
        at Object.openSync (fs.js:462:3)
        at Object.readFileSync (fs.js:364:35)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:95:1
        at step (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:33:1)
        at Object.next (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:14:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:8:1
        at new Promise (<anonymous>)
        at module.exports.__webpack_modules__.5406.__awaiter (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:4:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:92:1
        at arrayEach (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/lodash/lodash.js:516:1)
    (node:65991) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 22)
    (node:65991) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/4c6aaadb4085edb0fcc4f2b833290d23/acknowledge-orphaned-processing-tasks.lua'
        at Object.openSync (fs.js:462:3)
        at Object.readFileSync (fs.js:364:35)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:95:1
        at step (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:33:1)
        at Object.next (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:14:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:8:1
        at new Promise (<anonymous>)
        at module.exports.__webpack_modules__.5406.__awaiter (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:4:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:92:1
        at arrayEach (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/lodash/lodash.js:516:1)
    (node:65991) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 23)
    (node:65991) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/4c6aaadb4085edb0fcc4f2b833290d23/update-task.lua'
        at Object.openSync (fs.js:462:3)
        at Object.readFileSync (fs.js:364:35)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:95:1
        at step (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:33:1)
        at Object.next (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:14:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:8:1
        at new Promise (<anonymous>)
        at module.exports.__webpack_modules__.5406.__awaiter (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:4:1)
        at /private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/conveyor-mq/dist/lua/index.js:92:1
        at arrayEach (/private/var/folders/y5/cvt3hflx0q1byk56f9t3ntbh0000gn/T/webpack:/@groupic/jobs/node_modules/lodash/lodash.js:516:1)
    

    Edit: transpiled with plain old tsc and getting the same result. The errors are a lot more friendly/readable, though:

    (node:70375) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/update-task.lua'
        at Object.openSync (fs.js:465:3)
        at Object.readFileSync (fs.js:368:35)
        at /Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:5012:39
        at step (/Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:4950:23)
        at Object.next (/Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:4931:53)
        at /Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:4925:71
        at new Promise (<anonymous>)
        at module.exports.__webpack_modules__.4369.__awaiter (/Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:4921:12)
        at /Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:5009:16
        at arrayEach (/Users/joeyfigaro/repositories/groupic/packages/jobs/_dist/index.js:13946:11)
    
    opened by joeyfigaro 4
  • Task dispatcher

    Task dispatcher

    I'm using resque so far, in comparison seems I need to dispatch myself different kind of jobs, i.e if I have jobs that do different tasks, but worker can take only one "handler" which means I must embed a "class" in "data" and dispatch to appropriate handler in the handler method.

    Could you perhaps add example task dispatcher which could resolve the actual task via "class" (or more appropriate) key in "data".

    The dispatcher is probably trivial, but would be nice if the library takes the problem as first citizen.

    documentation question 
    opened by glensc 4
  • Queue rate limiting

    Queue rate limiting

    Description

    This task is for implementing rate-limiting in Conveyor MQ and assessing the various implementation options and their trade-offs.

    Implementations

    Queues can either be rate-limited on the producer side or the consumer side.

    Producer side

    Rate limiting on the producer side requires that tasks be scheduled according to the rate limit constraints, and then enqueued by an orchestrator.

    Pros

    • Task rate is centrally constrained in the queue
    • No complexity in consumers/workers

    Cons

    • Stateful
    • Complexity in enqueuing/scheduling task
    • Bound by orchestrator interval

    Consumer side

    Rate limiting on the consumer side requires that tasks are only taken from the queue for processing at the required rate by having the consumers/workers coordinate when they can and cannot take a task and process it.

    Pros

    • Not stateful
    • No complexity when enqueuing/scheduling tasks, or orchestrating the queue.

    Cons

    • Extra overhead is added to consumers/workers to coordinate when the can & cannot take a task to process, + state for this.
    enhancement 
    opened by jasrusable 3
  • Bump @typescript-eslint/parser from 5.40.1 to 5.46.1

    Bump @typescript-eslint/parser from 5.40.1 to 5.46.1

    Bumps @typescript-eslint/parser from 5.40.1 to 5.46.1.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.46.1

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/typescript-eslint

    v5.46.0

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)

    v5.44.0

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.46.1 (2022-12-12)

    Note: Version bump only for package @​typescript-eslint/parser

    5.46.0 (2022-12-08)

    Note: Version bump only for package @​typescript-eslint/parser

    5.45.1 (2022-12-05)

    Bug Fixes

    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    5.44.0 (2022-11-21)

    Note: Version bump only for package @​typescript-eslint/parser

    5.43.0 (2022-11-14)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.1 (2022-11-07)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.0 (2022-10-31)

    Features

    Reverts

    5.41.0 (2022-10-24)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump typedoc from 0.23.17 to 0.23.22

    Bump typedoc from 0.23.17 to 0.23.22

    Bumps typedoc from 0.23.17 to 0.23.22.

    Release notes

    Sourced from typedoc's releases.

    v0.23.22

    Features

    • Add support for defining the kind sort order, #2109.

    Bug Fixes

    • Normalize all file paths on Windows, #2113.
    • Fix @link tags within lists, #2103.

    v0.23.21

    Features

    • Added support for a catch-all wildcard in externalSymbolLinkMappings, #2102.
    • Added support for TypeScript 4.9.

    Thanks!

    v0.23.20

    Bug Fixes

    • Fixed comment discovery for @inheritDoc if inheriting from a function type alias, #2087.

    v0.23.19

    Bug Fixes

    • Fixed title link if titleLink option was not specified, #2085.

    Thanks!

    v0.23.18

    Features

    • Improved error reporting when failing to find entry points, #2080, #2082.

    Bug Fixes

    • Constructor parameter-properties will now use the @param comment for the parameter if available, #1261.
    • Fixed display of object types containing methods, #1788.
    • Fixed conversion of intrinsic string mapping types when converting without a type node, #2079.
    Changelog

    Sourced from typedoc's changelog.

    v0.23.22 (2022-12-11)

    Features

    • Add support for defining the kind sort order, #2109.

    Bug Fixes

    • Normalize all file paths on Windows, #2113.
    • Fix @link tags within lists, #2103.

    v0.23.21 (2022-11-14)

    Features

    • Added support for a catch-all wildcard in externalSymbolLinkMappings, #2102.
    • Added support for TypeScript 4.9.

    Thanks!

    v0.23.20 (2022-11-03)

    Bug Fixes

    • Fixed comment discovery for @inheritDoc if inheriting from a function type alias, #2087.

    v0.23.19 (2022-10-28)

    Bug Fixes

    • Fixed title link if titleLink option was not specified, #2085.

    Thanks!

    v0.23.18 (2022-10-23)

    Features

    • Improved error reporting when failing to find entry points, #2080, #2082.

    Bug Fixes

    • Constructor parameter-properties will now use the @param comment for the parameter if available, #1261.
    • Fixed display of object types containing methods, #1788.
    • Fixed conversion of intrinsic string mapping types when converting without a type node, #2079.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/eslint-plugin from 5.40.1 to 5.46.0

    Bump @typescript-eslint/eslint-plugin from 5.40.1 to 5.46.0

    Bumps @typescript-eslint/eslint-plugin from 5.40.1 to 5.46.0.

    Release notes

    Sourced from @​typescript-eslint/eslint-plugin's releases.

    v5.46.0

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)

    v5.44.0

    5.44.0 (2022-11-21)

    Bug Fixes

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/eslint-plugin's changelog.

    5.46.0 (2022-12-08)

    Bug Fixes

    • eslint-plugin: [ban-types] update message to suggest object instead of Record<string, unknown> (#6079) (d91a5fc)

    Features

    • eslint-plugin: [prefer-nullish-coalescing] logic and test for strict null checks (#6174) (8a91cbd)

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)

    5.44.0 (2022-11-21)

    Bug Fixes

    • eslint-plugin: [no-empty-interface] disable autofix for declaration merging with class (#5920) (a4f85b8)
    • eslint-plugin: [no-unnecessary-condition] handle index signature type (#5912) (5baad08)
    • eslint-plugin: [prefer-optional-chain] handle binary expressions in negated or (#5992) (2778ff0)
    • typescript-estree: don't consider a cached program unless it's specified in the current parserOptions.project config (#5999) (530e0e6)

    Features

    • eslint-plugin: [adjacent-overload-signatures] check BlockStatement nodes (#5998) (97d3e56)
    • eslint-plugin: [keyword-spacing] Support spacing in import-type syntax (#5977) (6a735e1)

    5.43.0 (2022-11-14)

    Bug Fixes

    ... (truncated)

    Commits
    • 1e1573a chore: publish v5.46.0
    • d91a5fc fix(eslint-plugin): [ban-types] update message to suggest object instead of...
    • 8a91cbd feat(eslint-plugin): [prefer-nullish-coalescing] logic and test for strict nu...
    • 2d0a883 chore: publish v5.45.1
    • 26c4b46 docs(eslint-plugin): [member-ordering] remove invalid private-abstract-* ment...
    • 2288b35 chore(eslint-plugin): valid typescript error code in eslint-recommended (#6165)
    • 46c14cd chore: use short form for nx project names (#6160)
    • 0b37822 chore: bump Nx to 15 (#6140)
    • 98caa92 fix(eslint-plugin): [keyword-spacing] unexpected space before/after in `impor...
    • 5d49d5d fix(eslint-plugin): [sort-type-constituents, sort-type-union-intersection-mem...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/eslint-plugin from 5.40.1 to 5.45.1

    Bump @typescript-eslint/eslint-plugin from 5.40.1 to 5.45.1

    Bumps @typescript-eslint/eslint-plugin from 5.40.1 to 5.45.1.

    Release notes

    Sourced from @​typescript-eslint/eslint-plugin's releases.

    v5.45.1

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#6134) (e777f5e)

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)

    v5.44.0

    5.44.0 (2022-11-21)

    Bug Fixes

    • eslint-plugin: [no-empty-interface] disable autofix for declaration merging with class (#5920) (a4f85b8)
    • eslint-plugin: [no-unnecessary-condition] handle index signature type (#5912) (5baad08)
    • eslint-plugin: [prefer-optional-chain] handle binary expressions in negated or (#5992) (2778ff0)
    • typescript-estree: don't consider a cached program unless it's specified in the current parserOptions.project config (#5999) (530e0e6)

    Features

    • eslint-plugin: [adjacent-overload-signatures] check BlockStatement nodes (#5998) (97d3e56)
    • eslint-plugin: [keyword-spacing] Support spacing in import-type syntax (#5977) (6a735e1)
    • support parsing satisfies operators (#5717) (20d7cae)
    • update to TypeScript 4.9 (#5716) (4d744ea)

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/eslint-plugin's changelog.

    5.45.1 (2022-12-05)

    Bug Fixes

    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#6118) (5d49d5d)

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)

    5.44.0 (2022-11-21)

    Bug Fixes

    • eslint-plugin: [no-empty-interface] disable autofix for declaration merging with class (#5920) (a4f85b8)
    • eslint-plugin: [no-unnecessary-condition] handle index signature type (#5912) (5baad08)
    • eslint-plugin: [prefer-optional-chain] handle binary expressions in negated or (#5992) (2778ff0)
    • typescript-estree: don't consider a cached program unless it's specified in the current parserOptions.project config (#5999) (530e0e6)

    Features

    • eslint-plugin: [adjacent-overload-signatures] check BlockStatement nodes (#5998) (97d3e56)
    • eslint-plugin: [keyword-spacing] Support spacing in import-type syntax (#5977) (6a735e1)

    5.43.0 (2022-11-14)

    Bug Fixes

    • eslint-plugin: [no-shadow] handle false positives on generics and parameters (#5902) (769e8c8)
    • eslint-plugin: [promise-function-async] handle keyword token (#5907) (f25a94f)

    Features

    • eslint-plugin: [consistent-type-imports] support fixing to inline types (#5050) (75dcdf1)
    • eslint-plugin: [naming-convention] add support for "override" and "async" modifiers (#5310) (#5610) (c759da1)
    • eslint-plugin: [prefer-optional-chain] support suggesting !foo || !foo.bar as a valid match for the rule (#5594) (923d486)

    5.42.1 (2022-11-07)

    ... (truncated)

    Commits
    • 2d0a883 chore: publish v5.45.1
    • 26c4b46 docs(eslint-plugin): [member-ordering] remove invalid private-abstract-* ment...
    • 2288b35 chore(eslint-plugin): valid typescript error code in eslint-recommended (#6165)
    • 46c14cd chore: use short form for nx project names (#6160)
    • 0b37822 chore: bump Nx to 15 (#6140)
    • 98caa92 fix(eslint-plugin): [keyword-spacing] unexpected space before/after in `impor...
    • 5d49d5d fix(eslint-plugin): [sort-type-constituents, sort-type-union-intersection-mem...
    • 9d58b6b fix(eslint-plugin): [no-shadow] add call and method signatures to `ignoreFunc...
    • 0af822a docs: move remaining docs files into website (#6138)
    • d7114d3 fix(eslint-plugin): [prefer-optional-chain] collect MetaProperty type (#6083)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump @typescript-eslint/parser from 5.40.1 to 5.45.0

    Bump @typescript-eslint/parser from 5.40.1 to 5.45.0

    Bumps @typescript-eslint/parser from 5.40.1 to 5.45.0.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.45.0

    5.45.0 (2022-11-28)

    Bug Fixes

    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#6043) (6e079eb)
    • scope-manager: add support for TS4.9 satisfies expression (#6059) (44027db)
    • typescript-estree: stub out ts.SatisfiesExpression on old TS versions (#6076) (1302b30)

    Features

    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#5965) (2abadc6)
    • support Auto Accessor syntax (#5926) (becd1f8)

    v5.44.0

    5.44.0 (2022-11-21)

    Bug Fixes

    • eslint-plugin: [no-empty-interface] disable autofix for declaration merging with class (#5920) (a4f85b8)
    • eslint-plugin: [no-unnecessary-condition] handle index signature type (#5912) (5baad08)
    • eslint-plugin: [prefer-optional-chain] handle binary expressions in negated or (#5992) (2778ff0)
    • typescript-estree: don't consider a cached program unless it's specified in the current parserOptions.project config (#5999) (530e0e6)

    Features

    • eslint-plugin: [adjacent-overload-signatures] check BlockStatement nodes (#5998) (97d3e56)
    • eslint-plugin: [keyword-spacing] Support spacing in import-type syntax (#5977) (6a735e1)
    • support parsing satisfies operators (#5717) (20d7cae)
    • update to TypeScript 4.9 (#5716) (4d744ea)

    v5.43.0

    5.43.0 (2022-11-14)

    Bug Fixes

    • eslint-plugin: [no-shadow] handle false positives on generics and parameters (#5902) (769e8c8)
    • eslint-plugin: [promise-function-async] handle keyword token (#5907) (f25a94f)

    Features

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.45.0 (2022-11-28)

    Note: Version bump only for package @​typescript-eslint/parser

    5.44.0 (2022-11-21)

    Note: Version bump only for package @​typescript-eslint/parser

    5.43.0 (2022-11-14)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.1 (2022-11-07)

    Note: Version bump only for package @​typescript-eslint/parser

    5.42.0 (2022-10-31)

    Features

    Reverts

    5.41.0 (2022-10-24)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits
    • 267da4e chore: publish v5.45.0
    • 01159d2 chore: publish v5.44.0
    • 426c2f9 chore: remove unnecessary project names from nx commands (#6054)
    • e2d1263 chore: switched repo lint to use nx run-many (#6038)
    • 8af1b4d chore: publish v5.43.0
    • b8b24c2 chore: publish v5.42.1
    • 1e5e9ea chore: publish v5.42.0
    • 2ee81df Revert "feat(scope-manager): ignore ECMA version" (#5888)
    • 3b8d449 feat(scope-manager): ignore ECMA version (#5881)
    • fcf3f9d docs: Mention wide globs performance implications in monorepos docs and parse...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump typedoc from 0.23.17 to 0.23.23

    Bump typedoc from 0.23.17 to 0.23.23

    Bumps typedoc from 0.23.17 to 0.23.23.

    Release notes

    Sourced from typedoc's releases.

    v0.23.23

    Features

    • Added ts.Signature to emitted EVENT_CREATE_SIGNATURE event, #2002.

    Bug Fixes

    • Links to members hidden by filter settings now temporarily override the filter, #2092.
    • If src/ and src/x are specified as entry points, src/ will no longer be ignored, #2121.

    v0.23.22

    Features

    • Add support for defining the kind sort order, #2109.

    Bug Fixes

    • Normalize all file paths on Windows, #2113.
    • Fix @link tags within lists, #2103.

    v0.23.21

    Features

    • Added support for a catch-all wildcard in externalSymbolLinkMappings, #2102.
    • Added support for TypeScript 4.9.

    Thanks!

    v0.23.20

    Bug Fixes

    • Fixed comment discovery for @inheritDoc if inheriting from a function type alias, #2087.

    v0.23.19

    Bug Fixes

    • Fixed title link if titleLink option was not specified, #2085.

    Thanks!

    v0.23.18

    ... (truncated)

    Changelog

    Sourced from typedoc's changelog.

    v0.23.23 (2022-12-18)

    Features

    • Added ts.Signature to emitted EVENT_CREATE_SIGNATURE event, #2002.

    Bug Fixes

    • Links to members hidden by filter settings now temporarily override the filter, #2092.
    • If src/ and src/x are specified as entry points, src/ will no longer be ignored, #2121.

    v0.23.22 (2022-12-11)

    Features

    • Add support for defining the kind sort order, #2109.

    Bug Fixes

    • Normalize all file paths on Windows, #2113.
    • Fix @link tags within lists, #2103.

    v0.23.21 (2022-11-14)

    Features

    • Added support for a catch-all wildcard in externalSymbolLinkMappings, #2102.
    • Added support for TypeScript 4.9.

    Thanks!

    v0.23.20 (2022-11-03)

    Bug Fixes

    • Fixed comment discovery for @inheritDoc if inheriting from a function type alias, #2087.

    v0.23.19 (2022-10-28)

    Bug Fixes

    • Fixed title link if titleLink option was not specified, #2085.

    Thanks!

    v0.23.18 (2022-10-23)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump @types/uuid from 8.3.4 to 9.0.0

    Bump @types/uuid from 8.3.4 to 9.0.0

    Bumps @types/uuid from 8.3.4 to 9.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump typescript from 4.8.4 to 4.9.4

    Bump typescript from 4.8.4 to 4.9.4

    Bumps typescript from 4.8.4 to 4.9.4.

    Release notes

    Sourced from typescript's releases.

    TypeScript 4.9.4

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:

    Changes:

    • e2868216f637e875a74c675845625eb15dcfe9a2 Bump version to 4.9.4 and LKG.
    • eb5419fc8d980859b98553586dfb5f40d811a745 Cherry-pick #51704 to release 4.9 (#51712)
    • b4d382b9b12460adf2da4cc0d1429cf19f8dc8be Cherry-pick changes for narrowing to tagged literal types.
    • e7a02f43fce47e1a39259ada5460bcc33c8e98b5 Port of #51626 and #51689 to release-4.9 (#51627)
    • 1727912f0437a7f367d90040fc4b0b4f3efd017a Cherry-pick fix around visitEachChild to release-4.9. (#51544)

    This list of changes was auto generated.

    TypeScript 4.9

    For release notes, check out the release announcement.

    Downloads are available on:

    Changes:

    • 93bd577458d55cd720b2677705feab5c91eb12ce Bump version to 4.9.3 and LKG.
    • 107f832b80df2dc97748021cb00af2b6813db75b Update LKG.
    • 31bee5682df130a14ffdd5742f994dbe7313dd0e Cherry-pick PR #50977 into release-4.9 (#51363) [ #50872 ]
    • 1e2fa7ae15f8530910fef8b916ec8a4ed0b59c45 Update version to 4.9.2-rc and LKG.
    • 7ab89e5c6e401d161f31f28a6c555a3ba530910e Merge remote-tracking branch 'origin/main' into release-4.9
    • e5cd686defb1a4cbdb36bd012357ba5bed28f371 Update package-lock.json
    • 8d40dc15d1b9945837e7860320fdccfe27c40cad Update package-lock.json
    • 5cfb3a2fe344a5350734305193e6cc99516285ca Only call return() for an abrupt completion in user code (#51297)
    • a7a9d158e817fcb0e94dc1c24e0a401b21be0cc9 Fix for broken baseline in yieldInForInInDownlevelGenerator (#51345)
    • 7f8426f4df0d0a7dd8b72079dafc3e60164a23b1 fix for-in enumeration containing yield in generator (#51295)
    • 3d2b4017eb6b9a2b94bc673291e56ae95e8beddd Fix assertion functions accessed via wildcard imports (#51324)
    • 64d0d5ae140b7b26a09e75114517b418d6bcaa9f fix(51301): Fixing an unused import at the end of a line removes the newline (#51320)
    • 754eeb2986bde30d5926e0fa99c87dda9266d01b Update CodeQL workflow and configuration, fix found bugs (#51263)
    • d8aad262006ad2d2c91aa7a0e4449b4b83c57f7b Update package-lock.json
    • d4f26c840b1db76c0b25a405c8e73830a2b45cbc fix(51245): Class with parameter decorator in arrow function causes "convert to default export" refactoring failure (#51256)
    • 16faf45682173ea437a50330feb4785578923d7f Update package-lock.json
    • 8b1ecdb701e2a2e19e9f8bcdd6b2beac087eabee fix(50654): "Move to a new file" breaks the declaration of referenced variable (#50681)
    • 170a17fad57eae619c5ef2b7bdb3ac00d6c32c47 Dom update 2022-10-25 (#51300)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump ioredis from 5.2.3 to 5.2.4

    Bump ioredis from 5.2.3 to 5.2.4

    Bumps ioredis from 5.2.3 to 5.2.4.

    Release notes

    Sourced from ioredis's releases.

    v5.2.4

    5.2.4 (2022-11-02)

    Bug Fixes

    • passing in family parameter in URL in node 18 (#1673) (6f1ab9f)
    Changelog

    Sourced from ioredis's changelog.

    5.2.4 (2022-11-02)

    Bug Fixes

    • passing in family parameter in URL in node 18 (#1673) (6f1ab9f)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump prettier from 2.7.1 to 2.8.1

    Bump prettier from 2.7.1 to 2.8.1

    Bumps prettier from 2.7.1 to 2.8.1.

    Release notes

    Sourced from prettier's releases.

    2.8.1

    🔗 Changelog

    2.8.0

    diff

    🔗 Release note

    Changelog

    Sourced from prettier's changelog.

    2.8.1

    diff

    Fix SCSS map in arguments (#9184 by @​agamkrbit)

    // Input
    $display-breakpoints: map-deep-merge(
      (
        "print-only": "only print",
        "screen-only": "only screen",
        "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, "sm")-1})",
      ),
      $display-breakpoints
    );
    

    // Prettier 2.8.0 $display-breakpoints: map-deep-merge( ( "print-only": "only print", "screen-only": "only screen", "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, " sm ")-1})", ), $display-breakpoints );

    // Prettier 2.8.1 $display-breakpoints: map-deep-merge( ( "print-only": "only print", "screen-only": "only screen", "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, "sm")-1})", ), $display-breakpoints );

    Support auto accessors syntax (#13919 by @​sosukesuzuki)

    Support for Auto Accessors Syntax landed in TypeScript 4.9.

    (Doesn't work well with babel-ts parser)

    class Foo {
      accessor foo: number = 3;
    </tr></table> 
    

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
Releases(v0.0.38)
  • v0.0.38(Oct 27, 2022)

    • Merge pull request #166 from dougg0k/many-changes 75d7abf
    • returned to npm in benchmarks and examples f63edce
    • changed supported nodejs version to 14,16,18 cea0a00
    • upgraded packages and removed unused type 3bc6131
    • downgraded jest and changed tests to run on nodejs 12,14,16 instead 1d25d9b
    • changed to date-fns and added caret to deps 394499e
    • changes ci files to npm 5c088e2
    • upgraded packages to latest, expect starting with p- ee672df
    • changed to npm 9798633
    • more packages upgrades 8cde379
    • removed unneeded async and simplified redis quit 3459b20
    • same refactoring in another place 46009fc
    • fixed and refactored data into a varible to avoid mistakes c06a7c1
    • upgraded ioredis to v5 8934f75
    • returned to es5 0b1faac
    • completely removed the need for lodash d90e261
    • add all changes 5277496
    • Merge pull request #87 from conveyor-mq/dependabot/npm_and_yarn/typescript-3.9.7 adc17ca
    • Merge pull request #90 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/parser-3.10.1 fe305f9
    • Merge pull request #91 from conveyor-mq/dependabot/npm_and_yarn/types/uuid-8.3.0 cdac589
    • Merge pull request #98 from conveyor-mq/dependabot/npm_and_yarn/highlight.js-10.4.1 70789f9
    • Merge pull request #100 from conveyor-mq/dependabot/npm_and_yarn/node-notifier-8.0.1 1a251d6
    • Merge pull request #102 from conveyor-mq/dependabot/npm_and_yarn/np-7.2.0 d981d30
    • Merge pull request #103 from conveyor-mq/dependabot/npm_and_yarn/typedoc-neo-theme-1.1.0 d40c572
    • Bump typedoc-neo-theme from 1.0.9 to 1.1.0 34ff6b9
    • Bump np from 6.5.0 to 7.2.0 01fab03
    • Bump node-notifier from 8.0.0 to 8.0.1 08a20e1
    • Bump highlight.js from 10.2.0 to 10.4.1 dffb125
    • Merge pull request #96 from conveyor-mq/dependabot/npm_and_yarn/eslint-7.13.0 53ec339
    • Bump eslint from 7.6.0 to 7.13.0 bba2bfb
    • Bump @types/uuid from 8.0.0 to 8.3.0 282a3ab
    • Bump @typescript-eslint/parser from 3.6.1 to 3.10.1 3afb25c
    • Bump typescript from 3.9.6 to 3.9.7 2668f19
    • Merge pull request #86 from conveyor-mq/dependabot/npm_and_yarn/typedoc-0.19.2 cd6eb8a
    • Merge pull request #84 from conveyor-mq/dependabot/npm_and_yarn/eslint-import-resolver-typescript-2.3.0 518273f
    • Merge pull request #83 from conveyor-mq/dependabot/npm_and_yarn/np-6.5.0 00c594a
    • Merge pull request #82 from conveyor-mq/dependabot/npm_and_yarn/types/lodash-4.14.161 b82f967
    • Merge pull request #80 from conveyor-mq/dependabot/npm_and_yarn/jest-26.4.2 d33024e
    • Bump typedoc from 0.17.8 to 0.19.2 6c3381a
    • Bump eslint-import-resolver-typescript from 2.0.0 to 2.3.0 829f9bf
    • Bump np from 6.3.2 to 6.5.0 9f59748
    • Bump @types/lodash from 4.14.157 to 4.14.161 300bcca
    • Bump jest from 26.1.0 to 26.4.2 1f8ae0a
    • Merge pull request #67 from conveyor-mq/dependabot/npm_and_yarn/rate-limiter-flexible-2.1.10 0e16f65
    • Merge pull request #66 from conveyor-mq/dependabot/npm_and_yarn/types/ioredis-4.17.3 319aa90
    • Merge pull request #65 from conveyor-mq/dependabot/npm_and_yarn/eslint-7.6.0 edee1d5
    • Merge pull request #64 from conveyor-mq/dependabot/npm_and_yarn/typedoc-neo-theme-1.0.9 40006d4
    • Merge pull request #62 from conveyor-mq/dependabot/npm_and_yarn/p-queue-6.6.0 506e3d5
    • Merge pull request #59 from conveyor-mq/dependabot/npm_and_yarn/examples/lodash-4.17.19 775fec3
    • Merge pull request #58 from conveyor-mq/dependabot/npm_and_yarn/benchmarks/lodash-4.17.19 d583675
    • Bump eslint from 7.4.0 to 7.6.0 6a88b07
    • Bump @types/ioredis from 4.17.0 to 4.17.3 dba1b1c
    • Bump lodash from 4.17.15 to 4.17.19 in /examples 5ed82d2
    • Bump lodash from 4.17.15 to 4.17.19 in /benchmarks 2039395
    • Bump rate-limiter-flexible from 2.1.7 to 2.1.10 6e18def
    • Bump typedoc-neo-theme from 1.0.8 to 1.0.9 8760bd3
    • Bump p-queue from 6.5.0 to 6.6.0 fd2e3d8

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.37...v0.0.38

    Source code(tar.gz)
    Source code(zip)
  • v0.0.37(Aug 5, 2020)

    • Merge pull request #69 from conveyor-mq/cleanup-deps 3a8a737
    • Move @types to dev-deps 9234656
    • Merge pull request #57 from conveyor-mq/dependabot/npm_and_yarn/lodash-4.17.19 058e7de
    • Bump lodash from 4.17.15 to 4.17.19 20dd2a5
    • Merge pull request #56 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-3.6.1 f0aa917
    • Merge pull request #55 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/parser-3.6.1 1fe0608
    • Merge pull request #54 from conveyor-mq/dependabot/npm_and_yarn/np-6.3.2 74f4e74
    • Merge pull request #50 from conveyor-mq/dependabot/npm_and_yarn/types/jest-26.0.4 cd130fd
    • Merge pull request #49 from conveyor-mq/dependabot/npm_and_yarn/eslint-7.4.0 c741985
    • Bump @typescript-eslint/eslint-plugin from 3.5.0 to 3.6.1 edd5f50
    • Bump @typescript-eslint/parser from 3.5.0 to 3.6.1 fc9eb49
    • Bump np from 6.2.5 to 6.3.2 1efa8a1
    • Bump @types/jest from 26.0.3 to 26.0.4 7ea1c02
    • Bump eslint from 7.3.1 to 7.4.0 3b19be4
    • Merge pull request #43 from conveyor-mq/dependabot/npm_and_yarn/types/ioredis-4.17.0 671f904
    • Merge pull request #44 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-3.5.0 cbe636e
    • Merge pull request #45 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/parser-3.5.0 c8e1e3c
    • Merge pull request #46 from conveyor-mq/dependabot/npm_and_yarn/typescript-3.9.6 80ac08b
    • Merge pull request #47 from conveyor-mq/dependabot/npm_and_yarn/p-queue-6.5.0 fcc9b4b
    • Bump p-queue from 6.4.0 to 6.5.0 18db4f2
    • Bump typescript from 3.9.5 to 3.9.6 5342bbc
    • Bump @typescript-eslint/parser from 3.4.0 to 3.5.0 352581c
    • Bump @typescript-eslint/eslint-plugin from 3.4.0 to 3.5.0 60daac0
    • Bump @types/ioredis from 4.16.7 to 4.17.0 ce9ee76

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.36...v0.0.37

    Source code(tar.gz)
    Source code(zip)
  • v0.0.36(Jun 29, 2020)

    • Merge pull request #8 from conveyor-mq/rate-limiting 3938534
    • Add get queue rate limit docs 25d9ba8
    • Add tests and update docs 9df99fe
    • Add test for setting queue rate limit 218c257
    • Merge pull request #42 from conveyor-mq/dependabot/npm_and_yarn/typedoc-0.17.8 bfb7902
    • Bump typedoc from 0.17.7 to 0.17.8 5dea56b
    • Add task limiting to docs b5f445b
    • Implement queue rate limit 76ba3e2
    • Linting cde896b
    • Implement rate limiter prototype 2a66853
    • Add setQueueRateLimit 56b25c0

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.35...v0.0.36

    Source code(tar.gz)
    Source code(zip)
  • v0.0.35(Jun 28, 2020)

    • Wait for worker and listener to be ready 2c3e43c
    • Update deps 797339a
    • Refactor redis config params fe10ae7
    • Merge pull request #40 from conveyor-mq/dependabot/npm_and_yarn/types/jest-26.0.3 83ac0d2
    • Merge pull request #39 from conveyor-mq/dependabot/npm_and_yarn/types/lodash-4.14.157 32f4944
    • Bump @types/jest from 26.0.0 to 26.0.3 c3ed9c0
    • Bump @types/lodash from 4.14.156 to 4.14.157 94b5e89
    • Merge pull request #36 from conveyor-mq/dependabot/npm_and_yarn/types/ioredis-4.16.7 748cd9f
    • Merge pull request #37 from conveyor-mq/dependabot/npm_and_yarn/jest-26.1.0 5f55d9c
    • Merge pull request #38 from conveyor-mq/dependabot/npm_and_yarn/uuid-8.2.0 b44abf8
    • Bump uuid from 8.1.0 to 8.2.0 9de5aab
    • Bump jest from 26.0.1 to 26.1.0 92475cc
    • Bump @types/ioredis from 4.16.6 to 4.16.7 b8a1104
    • Merge pull request #35 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-3.4.0 b83b1ab
    • Bump @typescript-eslint/eslint-plugin from 3.3.0 to 3.4.0 7dbe020
    • Merge pull request #34 from conveyor-mq/dependabot/npm_and_yarn/ts-jest-26.1.1 b1e87ef
    • Merge pull request #33 from conveyor-mq/dependabot/npm_and_yarn/types/lodash-4.14.156 d796321
    • Merge pull request #32 from conveyor-mq/dependabot/npm_and_yarn/eslint-7.3.1 4b40919
    • Merge pull request #31 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/parser-3.4.0 c66b0d0
    • Bump ts-jest from 26.1.0 to 26.1.1 3aa4d25
    • Bump @types/lodash from 4.14.155 to 4.14.156 bef5c98
    • Bump eslint from 7.3.0 to 7.3.1 4b87e69
    • Bump @typescript-eslint/parser from 3.3.0 to 3.4.0 4ed88aa
    • Merge pull request #30 from conveyor-mq/dependabot/npm_and_yarn/eslint-7.3.0 068266a
    • Merge pull request #29 from conveyor-mq/dependabot/npm_and_yarn/set-interval-async-1.0.33 5524c4c
    • Merge pull request #28 from conveyor-mq/dependabot/npm_and_yarn/moment-2.27.0 c0b7038
    • Bump eslint from 7.2.0 to 7.3.0 f6aa937
    • Bump set-interval-async from 1.0.32 to 1.0.33 a601144
    • Bump moment from 2.26.0 to 2.27.0 8d4b937
    • Merge pull request #26 from conveyor-mq/plugins 257d8c0
    • Add basic plugin docs 37efbb7
    • Add comments to example fa7fcb1
    • Add more hooks and tests feec60e
    • Merge pull request #27 from conveyor-mq/dependabot/npm_and_yarn/types/ioredis-4.16.6 8e16151
    • Bump @types/ioredis from 4.16.5 to 4.16.6 bee0d16
    • Add worker hooks 3f86d70
    • WIP: Implementing plugin infrestructure 391eadc

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.34...v0.0.35

    Source code(tar.gz)
    Source code(zip)
  • v0.0.34(Jun 17, 2020)

    • Add db and password to RedisConfig 66e38a3
    • Add Redis sharing to Overview de82268
    • Implement shared redis clients 0238210
    • Add debug section to README 2c96b89
    • Merge pull request #24 from conveyor-mq/dependabot/npm_and_yarn/eslint-config-airbnb-base-14.2.0 aa76706
    • Bump eslint-config-airbnb-base from 14.1.0 to 14.2.0 4f78437

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.33...v0.0.34

    Source code(tar.gz)
    Source code(zip)
  • v0.0.33(Jun 16, 2020)

  • v0.0.32(Jun 16, 2020)

    • Use lua script KEYS appropriately 50ab05a
    • Merge pull request #23 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/parser-3.3.0 3e0900c
    • Merge pull request #22 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-3.3.0 b1c3711
    • Merge pull request #21 from conveyor-mq/dependabot/npm_and_yarn/eslint-plugin-import-2.21.2 b4cb63c
    • Merge pull request #20 from conveyor-mq/dependabot/npm_and_yarn/eslint-plugin-prettier-3.1.4 fb0fa09
    • Merge pull request #19 from conveyor-mq/dependabot/npm_and_yarn/np-6.2.4 e2e2334
    • Bump @typescript-eslint/parser from 3.2.0 to 3.3.0 3dcfc93
    • Bump @typescript-eslint/eslint-plugin from 3.2.0 to 3.3.0 8bbb829
    • Bump eslint-plugin-import from 2.20.2 to 2.21.2 02469ca
    • Bump eslint-plugin-prettier from 3.1.3 to 3.1.4 19d3eb3
    • Bump np from 6.2.3 to 6.2.4 d61010d
    • Merge pull request #11 from conveyor-mq/task-types e68b394
    • Merge pull request #13 from conveyor-mq/dependabot/npm_and_yarn/eslint-7.2.0 fbed6d4
    • Bump eslint from 7.1.0 to 7.2.0 b760f0d
    • Merge pull request #14 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-3.2.0 9727c52
    • Merge pull request #15 from conveyor-mq/dependabot/npm_and_yarn/types/ioredis-4.16.5 5427566
    • Merge pull request #16 from conveyor-mq/dependabot/npm_and_yarn/types/jest-26.0.0 1e2b5b0
    • Merge pull request #17 from conveyor-mq/dependabot/npm_and_yarn/typescript-eslint/parser-3.2.0 066b23e
    • Bump @typescript-eslint/parser from 3.1.0 to 3.2.0 de7d74f
    • Bump @types/jest from 25.2.3 to 26.0.0 6c5d0a7
    • Bump @types/ioredis from 4.16.4 to 4.16.5 e2db1e4
    • Bump @typescript-eslint/eslint-plugin from 3.1.0 to 3.2.0 7fc9c1d
    • Add task-type or dispatching example e16df35

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.31...v0.0.32

    Source code(tar.gz)
    Source code(zip)
  • v0.0.31(Jun 13, 2020)

    • Create dependabot.yml ddfa389
    • Merge pull request #12 from conveyor-mq/split-take-task a8fb4d0
    • Split out takeTaskBlocking and markTaskProcessing a0af8d3
    • Rename takeTask to takeTaskAndMarkAsProcessing 5086624
    • Merge pull request #9 from glensc/patch-1 c25d77c
    • Readme: add missing word worker b87c076

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.30...v0.0.31

    Source code(tar.gz)
    Source code(zip)
  • v0.0.30(Jun 9, 2020)

  • v0.0.29(Jun 8, 2020)

    • Update docs 8f323f7
    • Remove unneeded awaits 9fecaaf
    • Remove unneeded await 0a0c1fd
    • Handle multiple handlers 34f07af
    • Small fixes 068f738
    • Change license to MIT 0552858
    • Update conveyor version 34e5078
    • Remove unnessesary awaits 45f489c

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.28...v0.0.29

    Source code(tar.gz)
    Source code(zip)
  • v0.0.27(Jun 5, 2020)

  • v0.0.22(May 30, 2020)

    • Remove dom from lib ee6988e
    • Export interfaces b5e16b0
    • Update conveyor a9f0fc6
    • Add sub task example 1f48d76

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.21...v0.0.22

    Source code(tar.gz)
    Source code(zip)
  • v0.0.21(May 30, 2020)

    • Install np 535272c
    • Update npm deps d267e24
    • Update docs 9bac0b9
    • Document manager, worker, orchestrator and listener creators 5340368
    • Add express example and add comments to other examples 154bae2

    https://github.com/conveyor-mq/conveyor-mq/compare/v0.0.20...v0.0.21

    Source code(tar.gz)
    Source code(zip)
  • v0.0.20(May 28, 2020)

    • Add more tests da95441
    • Update README cb35a31
    • Merge branch 'master' of github.com:conveyor-mq/conveyor-mq 4b98552
    • Remove async and cleanup createClient 876d1d9
    • Fix typo 4e75315
    • Implement event filtering for listener b2e2044
    • Update benchmarks dd37086
    • Add debug and release 0.0.19 4443794
    • Fix example links 13af939
    • Many things b75473a
    • Implement callLuaScriptMulti d93f919
    • Rename delayed -> scheduled 82e60cf
    • Small fixes 83a393a
    • Remove unused code eba3f63
    • Rename enums to singular 4f5685d
    • Small fixes 07459ad
    • Release 0.0.18 bf5f6dd
    • Implement queue pause/resume 6917abf
    • Merge branch 'master' of github.com:jasrusable/conveyor-mq d2f8000
    • Move enqueue task to lua 986d6a9
    • Update README 977e3b4
    • Remove .DS_Store 3e27108
    • Add bull a8c8b8b
    • Add benchmarks 9a47bf5
    • Release 0.0.17 cdcff33
    • Add multis 4470257
    • Implement getWorkers b4d46b3
    • Typo b90a823
    • Add worker to reference c6932e6
    • Remove dots ea88cbd
    • More docs be018c5
    • Remove nested params cbfb760
    • Update Quickstart ef9ed8b
    • Move markTaskSuccess to lua e42b36e
    • Refactor update-task 78b4549
    • Use enum for script names ac93f91
    • Release 0.0.16 a0014d2
    • Update npm deps 28020d8
    • Disable readyCheck as reconnect workaround 694e181
    • Release 0.0.15 5ee3e7a
    • Ignore sandpit 8fe4f5e
    • Seperate enqueue and schedule task bfea368
    • Release 0.0.14 a2b8de0
    • Use short links 4ecde37
    • Release 0.0.13 24317e4
    • Update docs 20dc593
    • Implement remove task 1b6336c
    • Implement destroy queue d06f467
    • Typo 418c701
    • Rename getTasksById c9e5338
    • Add CONTRIBUTING 47b4f7d
    • Fix typo a5eab58
    • Merge branch 'master' of github.com:jasrusable/conveyor-mq 698c9f0
    • Add task retries 6fb7012
    • Create LICENSE f467532
    • Create CODE_OF_CONDUCT acb3929
    • Release v0.0.12 dfa1edb
    • Implement getTaskCounts cf179a8
    • Implement stalling tasks checking 7ce4c85
    • Update npm badge ccb9b26
    • Ignore things 614d702
    • Small fixes 7707157
    • Rename cd5e9bf
    • Update docs 7591121
    • Update ToC a1017a5
    • More docs 5a318af
    • Link ToC cc881f4
    • More words 43da3f2
    • Progress 3ec3555
    • Implement remove task on success or failure a71c74a
    • Strip out moment 4e5539d
    • Remove moment from APIs e89ea89
    • Implement task progress 5b86217
    • Implement task progress 7f3081b
    • More docs b02af9b
    • Small fixes af1e648
    • Add more docs d584267
    • Small fixes and more docs a0e07ad
    • Rename enqueueScheduledTasks acdda1b
    • Add scheduled task status cbd9423
    • Small fixes 08605ac
    • Refactor retires 7e6ddd9
    • Schedule errored task 26199c0
    • Add more docs 19bca00
    • More docs d4b9800
    • Update README 7a4d884
    • Small fixes b83e5ee
    • Update README 3bbc8cb
    • Update docs & small fixes a72c7c7
    • Roughly implement delayed tasks 931f035
    • Use At suffix for timestamps 7cd770d
    • Add docs 7f24d17
    • Always block 24ce955
    • Release 0.0.6 4d36db8
    • Update deps 6ced0b7
    • Rename to conveyor mq 28b068d
    • Rename to conveyor-mq 2b561da
    • Small fixes & implement task execution timeout 8ee8167
    • Implement default retry strategies abfa3b1
    • Small fixes 9881388
    • Small fixes 6364fd5
    • Update README 08d689e
    • Add links 3206102
    • Small fixes dd6e0c5
    • Add more tests 17b732b
    • Add more tests b1a973b
    • Refactor some things 12c8300
    • Small fixes 25e1eb3
    • Add tests for worker events d7d5916
    • Small fixes bf29625
    • Fix worker shutdown & pause d43d24d
    • Update README 9de6095
    • Test promise case 7cd96f1
    • Implement task events 1c4be28
    • Add more tests 423ae5c
    • Test listener ed63492
    • Small fixes a9fd620
    • Fix tests ccc71a0
    • Small fixes f2f6345
    • Small fixes 7286578
    • Rename things f2435c6
    • Add more tests 403969c
    • Fix examples e2ea157
    • Refactor events fbcabaf
    • Fix typo 1e7f365
    • Update README f4e09f6
    • Sleep 7ccb861
    • Sleep for longer 65a5c61
    • Update deps a22ab89
    • Update README 005ef46
    • Rename things 644722b
    • Rename things d22aaa0
    • Use promise queues for processing tasks fba3b77
    • Small fixes c41c849
    • Implement concurrency 28ab11b
    • Refactor takeTaskBlocking db02491
    • Improve stalled task handling with takeTaskBlocking 4a475ad
    • Move takeTask logic into lua b73f449
    • Rename putTask to enqueTask ff35630
    • Add more events 461ab58
    • Add some event listening 2067790
    • Acknowledge tasks while processing 3789e24
    • Update README abeb718
    • Release 0.0.5 c311ff8
    • Update README 5f6e2c2
    • Update README b5789c5
    • Refactor queue manager 89f9a8a
    • Update README f5d96cb
    • Update README 5669989
    • Small fixes ae3f397
    • Make task id optional 56a0ebe
    • Remove unused code 26b2eb2
    • Add more tests 0f2b18c
    • Small fixes 4834948
    • Remove unused import 982847c
    • Add more tests 8ce06b4
    • Release 0.0.4 24e3a4f
    • Add more tests 91da8c4
    • Add test for createQueueHandler f8b649b
    • Rename to lua c46278a
    • Remove eslint disable rule 4c3be5b
    • Refactor registerHandler a00e27e
    • Remove unused code d3e16aa
    • Add more test cases a7369d6
    • Implement createQueueManager 0806362
    • Implement exec e865e38
    • Fix client duplication 8d47a01
    • rpoplpush and lock via lua a2a48c5
    • Switch to ioredis 0876cc5
    • Fix typo ee4c97b
    • Test new secret 8f9b9de
    • Small fixes 4c73732
    • Install coverage 86fa417
    • Remove coverage 86a67a8
    • Add seperate coverage workflow b1e01ee
    • Setup coveralls 4cd2c69
    • Add npm version bade 7d70cd6
    • Add test badge ee0c7a6
    • Force exit jest 3e78a27
    • Merge branch 'master' of github.com:jasrusable/conveyor ff439fd
    • Add docker compose with redis service cad8e2b
    • Don't fail fast 3efe20b
    • Set up matrix 7b82ba1
    • Typo a2bb6ea
    • Install deps 07fa303
    • Create test workflows 30a607e
    • Setup build e7f6997
    • Rename to Conveyor 426b261
    • Rename proejct to Conveyor 86d8e56
    • Many things fb4c7c3
    • Small fixes 86f8c84
    • Add more tests db85df8
    • Small fixes f2bfb25
    • Many things 0492ba7
    • Implement putTasks b5b8515
    • Implement getStalledTasks f128d59
    • Test processing tasks 090a9c0
    • Implement getTasks and getProcessingTasks 9caefa4
    • rpoplpush e48a1ca
    • Linting 08e0b46
    • Break out tests 28fdc9a
    • Rehome things 22b01e5
    • Add handlers f2af8b0
    • Implement task stalling d38fadf
    • Small fixes c0e874b
    • Roughtly implement retry delays 25dfdfc
    • Many things 27e03ef
    • Update npm deps 67a1017
    • Rehome things a2037c6
    • Many things 6a44a59
    • Many things ea565ba
    • Tidy up 38a665c
    • Implement task retries 6751db0
    • Implement task expirey dc13d10
    • Rehome things c1297a1

    https://github.com/conveyor-mq/conveyor-mq/compare/ed9bda164b32fdf9d0cdf5eca6b745c3090fdacb...v0.0.20

    Source code(tar.gz)
    Source code(zip)
Owner
Conveyor MQ
A fast, robust and extensible distributed task/job queue for Node.js
Conveyor MQ
Redis-backed task queue engine with advanced task control and eventual consistency

idoit Redis-backed task queue engine with advanced task control and eventual consistency. Task grouping, chaining, iterators for huge ranges. Postpone

Nodeca 65 Dec 15, 2022
Kue is a priority job queue backed by redis, built for node.js.

Kue Kue is no longer maintained Please see e.g. Bull as an alternative. Thank you! Kue is a priority job queue backed by redis, built for node.js. PRO

Automattic 9.4k Dec 20, 2022
A simple high-performance Redis message queue for Node.js.

RedisSMQ - Yet another simple Redis message queue A simple high-performance Redis message queue for Node.js. For more details about RedisSMQ design se

null 501 Dec 30, 2022
Premium Queue package for handling distributed jobs and messages in NodeJS.

The fastest, most reliable, Redis-based queue for Node. Carefully written for rock solid stability and atomicity. Sponsors · Features · UIs · Install

null 13.5k Dec 31, 2022
Redis Simple Message Queue

Redis Simple Message Queue A lightweight message queue for Node.js that requires no dedicated queue server. Just a Redis server. tl;dr: If you run a R

Patrick Liess 1.6k Dec 27, 2022
BullMQ - Premium Message Queue for NodeJS based on Redis

The fastest, most reliable, Redis-based distributed queue for Node. Carefully written for rock solid stability and atomicity. Read the documentation F

Taskforce.sh Inc. 3.1k Dec 30, 2022
Yet another concurrent priority task queue, yay!

YQueue Yet another concurrent priority task queue, yay! Install npm install yqueue Features Concurrency control Prioritized tasks Error handling for b

null 6 Apr 4, 2022
Job queues and scheduled jobs for Node.js, Beanstalkd and/or Iron.io.

Ironium Job queues and scheduled jobs for Node.js backed by Beanstalk/IronMQ/SQS. The Why You've got a workload that runs outside the Web app's reques

Assaf Arkin 71 Dec 14, 2022
Bree is the best job scheduler for Node.js and JavaScript with cron, dates, ms, later, and human-friendly support.

The best job scheduler for Node.js and JavaScript with cron, dates, ms, later, and human-friendly support. Works in Node v10+ and browsers, uses workers to spawn sandboxed processes, and supports async/await, retries, throttling, concurrency, and graceful shutdown. Simple, fast, and lightweight. Made for @ForwardEmail and @ladjs.

Bree - The Best Node.js and JavaScript Job Scheduler 2.5k Dec 30, 2022
A simple Node.js APIBAN client for downloading banned IPs and inserting them into a redis set

apiban-redis A simple Node.js APIBAN client for downloading banned IPs and inserting them into a redis set. Installation This utility can be run as a

jambonz 4 Apr 5, 2022
Cache is easy to use data caching Node.js package. It supports Memcached, Redis, and In-Memory caching engines.

Cache Cache NPM implements wrapper over multiple caching engines - Memcached, Redis and In-memory (use with single threaded process in development mod

PLG Works 49 Oct 24, 2022
Hello Jobs is a one-stop solution for all job seekers. In future, this could also serve as a platform for recruiters to hire potential candidates.

Hello Jobs Hello Jobs is a one-stop solution for all job seekers. In future, this could also serve as a platform for recruiters to hire potential cand

S Harshita 6 Dec 26, 2022
Opinionated, type-safe, zero-dependency max/min priority queue for JavaScript and TypeScript projects.

qewe qewe is an opinionated, type-safe, zero-dependency max/min priority queue for JavaScript and TypeScript projects. Installation Add qewe to your p

Jamie McElwain 2 Jan 10, 2022
A document based messaging queue for Mongo, DocumentDB, and others

DocMQ Messaging Queue for any document-friendly architectures (DocumentDB, Mongo, Postgres + JSONB, etc). Why Choose This DocMQ is a good choice if yo

Jakob Heuser 10 Dec 7, 2022
Better Queue for NodeJS

Better Queue - Powerful flow control Super simple to use Better Queue is designed to be simple to set up but still let you do complex things. Persiste

Diamond 415 Dec 17, 2022
A client-friendly run queue

client-run-queue This package provides a RunQueue implementation for scheduling and managing async or time-consuming functions such that client-side i

Passfolio 6 Nov 22, 2022
A client-friendly run queue

client-run-queue This package provides a RunQueue implementation for scheduling and managing async or time-consuming functions such that client-side i

Passfolio 4 Jul 5, 2022
An open-source link shortener built with Vercel Edge Functions and Upstash Redis.

Dub An open-source link shortener built with Vercel Edge Functions and Upstash Redis. Introduction · Deploy Your Own · Contributing Introduction Dub i

Steven Tey 4.9k Jan 5, 2023
Nodejs Background jobs using redis.

node-resque: The best background jobs in node. Distributed delayed jobs in nodejs. Resque is a background job system backed by Redis (version 2.6.0 an

Actionhero 1.2k Jan 3, 2023