New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

@mohamedhabibwork/core

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
Package was removed
Sorry, it seems this package was removed from the registry

@mohamedhabibwork/core

Unified TypeScript queue primitives across providers, with typed native escape hatches and capability discovery. Zero runtime dependencies.

latest
npmnpm
Version
0.2.0
Version published
Maintainers
1
Created
Source

@mohamedhabibwork/core

npm version npm downloads License: MIT GitHub: @mohamedhabibwork Node.js ≥ 20 TypeScript CI Socket

Portable queue primitives for TypeScript with typed native escape hatches and capability discovery. Zero runtime dependencies, ESM-only, runs on Node, Bun and Deno.

pnpm add @mohamedhabibwork/core

The four usage levels

import { createQueue, defineJob } from "@mohamedhabibwork/core";
import { memory } from "@mohamedhabibwork/memory"; // any @mohamedhabibwork/* provider

const queue = createQueue({ name: "emails", provider: memory() });
const sendEmail = defineJob<{ to: string }, { id: string }>("email.send");

// 1. Portable — identical on every provider
await queue.send(sendEmail, { to: "ada@example.com" }, { delay: "30s" });

// 2. Provider-aware — `native` is the selected provider's own options, strongly typed
await queue.send(sendEmail, { to: "ada@example.com" }, { native: { /* provider options */ } });

// 3. Escape hatch — the provider SDK object, typed via ProviderTypes["nativeClient"]
queue.native();

// 4. Capability discovery — loud instead of silent
queue.supports("delayedDelivery"); // boolean
queue.assertCapability("fifo");    // throws UnsupportedCapabilityError

Public surface (v0.1)

createQueue, defineJob, queue.send/dispatch, queue.sendBatch, queue.worker, queue.schedule, queue.native/withNative, queue.capabilities/supports/assertCapability, queue.describe/health/size/purge, queue.use/on, queue.connect/close, createQueueRegistry, installGracefulShutdown, the full error taxonomy (QueueKitError + 14 subclasses, retryable()/fatal() helpers), FakeClock, JsonSerializer, and testing utilities under @mohamedhabibwork/core/testing (captureJobs, waitForQueueEvent, waitForWorkerEvent).

Writing a provider adapter

Adapters implement QueueAdapter<TTypes> where TTypes extends ProviderTypes carries every native surface:

import { defineQueueProvider, type ProviderTypes } from "@mohamedhabibwork/core";

interface MyTypes extends ProviderTypes {
  connection: MyConnectionOptions;
  send: MySendOptions;          // shows up in queue.send(..., { native })
  worker: MyWorkerOptions;      // shows up in queue.worker(..., { native })
  nativeMessage: MyDeliveryHandle;
  nativeClient: MySdkClient;
  // ...
}

export const myProvider = defineQueueProvider(
  (config) => ({ id: "my-provider", capabilities, adapter, connection: config.connection, lazy: true }),
);

Rules for adapters:

  • Preserve provider errors on cause — never swallow them.
  • Declare capabilities honestly; core turns unsupported portable options into errors.
  • Expose the SDK via nativeClient() for anything you don't wrap.
  • The portable worker engine (WorkerEngine) is exported for reuse: poll → decode → validate → middleware → handler → ack / retry / dead-letter, with graceful shutdown and visibility extension built in.

Strictness

Compiled under strict, exactOptionalPropertyTypes, noUncheckedIndexedAccess, verbatimModuleSyntax, isolatedModules. No public any.

Keywords

queue

FAQs

Package last updated on 04 Sep 2026

Related posts