CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-queue

Asynchronous function queue with adjustable concurrency control and Promise/callback support

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

queue-management.mddocs/

Queue Management

Core queue functionality for creating, configuring, and controlling job execution with concurrency control and timeout management.

Capabilities

Queue Constructor

Creates a new Queue instance with optional configuration settings.

/**
 * Creates a new Queue instance
 * @param options - Configuration options for the queue
 */
constructor(options?: Options): Queue;

interface Options {
  /** Maximum number of jobs to process concurrently (default: Infinity) */
  concurrency?: number;
  /** Default timeout in milliseconds for jobs (default: 0 - no timeout) */
  timeout?: number;
  /** Automatically start processing when jobs are added (default: false) */
  autostart?: boolean;
  /** Array to collect job results (default: null) */
  results?: any[];
}

Usage Examples:

import Queue from "queue";

// Basic queue with unlimited concurrency
const basicQueue = new Queue();

// Queue with concurrency control
const limitedQueue = new Queue({
  concurrency: 3,
  timeout: 5000,
  results: []
});

// Auto-starting queue
const autoQueue = new Queue({
  autostart: true,
  concurrency: 2
});

Start Processing

Explicitly starts processing jobs and provides feedback when the queue empties or an error occurs.

/**
 * Start processing jobs in the queue
 * @param callback - Optional callback executed when queue empties or errors
 * @returns Promise resolving to results array if no callback provided
 */
start(): Promise<any[] | null>;
start(callback: (error?: Error, results?: any[] | null) => void): void;

Usage Examples:

// With callback
q.start((err, results) => {
  if (err) throw err;
  console.log('Queue finished:', results);
});

// With Promise
try {
  const results = await q.start();
  console.log('Queue finished:', results);
} catch (error) {
  console.error('Queue failed:', error);
}

Stop Processing

Stops the queue processing. Jobs can be resumed later with start().

/**
 * Stops queue processing (can be resumed)
 */
stop(): void;

Usage Example:

// Stop processing temporarily
q.stop();

// Resume later
q.start();

End Processing

Immediately stops and empties the queue. All pending jobs are discarded.

/**
 * Stop and empty the queue immediately
 * @param error - Optional error to pass to the end event
 */
end(error?: Error): void;

Usage Example:

// Emergency stop with error
q.end(new Error('Critical failure'));

// Clean shutdown
q.end();

Queue Length

Gets the total number of jobs (pending execution + queued).

/**
 * Total jobs pending execution and queued (readonly)
 */
readonly length: number;

Usage Example:

console.log(`Queue has ${q.length} jobs total`);

Queue Properties

Access and modify queue configuration at runtime.

/**
 * Maximum number of jobs to process concurrently
 */
concurrency: number;

/**
 * Default timeout in milliseconds for jobs
 */
timeout: number;

/**
 * Automatically start processing when jobs are added
 */
autostart: boolean;

/**
 * Array to collect job results (null if disabled)
 */
results: any[] | null;

/**
 * Number of jobs currently being processed (readonly)
 */
readonly pending: number;

/**
 * Internal session counter for queue operations (readonly)
 */
readonly session: number;

/**
 * Whether the queue is currently running (readonly)
 */
readonly running: boolean;

/**
 * Internal array of queued jobs waiting to be processed (readonly)
 */
readonly jobs: QueueWorker[];

/**
 * Array of active timeout IDs for job timeouts (readonly)
 */
readonly timers: number[];

Usage Examples:

// Adjust concurrency at runtime
q.concurrency = 5;

// Change default timeout
q.timeout = 10000;

// Enable result collection
q.results = [];

// Enable auto-start mode
q.autostart = true;

// Check queue status (readonly properties)
console.log(`Pending jobs: ${q.pending}`);
console.log(`Queue running: ${q.running}`);
console.log(`Jobs in queue: ${q.jobs.length}`);
console.log(`Active timeouts: ${q.timers.length}`);

Clear Timers

Clears all active timeout timers for pending jobs.

/**
 * Clear all active timeout timers
 */
clearTimers(): void;

Usage Example:

// Cancel all timeouts but keep jobs running
q.clearTimers();

Install with Tessl CLI

npx tessl i tessl/npm-queue

docs

array-operations.md

event-system.md

index.md

queue-management.md

tile.json