UNPKG

nodejs-cloud-taskmq

Version:

Node.js TypeScript library for integrating Google Cloud Tasks with MongoDB/Redis/Memory/Custom for a BullMQ-like queue system. Compatible with NestJS but framework-agnostic.

98 lines (97 loc) 5.95 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TASK_STATUSES = exports.MongoStorageAdapter = exports.RedisStorageAdapter = exports.MemoryStorageAdapter = exports.CloudTask = exports.CloudTaskConsumer = exports.OnTaskProgress = exports.OnTaskFailed = exports.OnTaskCompleted = exports.OnTaskActive = exports.Process = exports.Processor = exports.TaskController = exports.RateLimiterService = exports.ConsumerService = exports.ProducerService = exports.CloudTaskMQ = void 0; exports.createCloudTaskMQ = createCloudTaskMQ; exports.createAndInitializeCloudTaskMQ = createAndInitializeCloudTaskMQ; // Main class var cloud_taskmq_1 = require("./cloud-taskmq"); Object.defineProperty(exports, "CloudTaskMQ", { enumerable: true, get: function () { return cloud_taskmq_1.CloudTaskMQ; } }); // Services var producer_service_1 = require("./services/producer.service"); Object.defineProperty(exports, "ProducerService", { enumerable: true, get: function () { return producer_service_1.ProducerService; } }); var consumer_service_1 = require("./services/consumer.service"); Object.defineProperty(exports, "ConsumerService", { enumerable: true, get: function () { return consumer_service_1.ConsumerService; } }); var rate_limiter_service_1 = require("./services/rate-limiter.service"); Object.defineProperty(exports, "RateLimiterService", { enumerable: true, get: function () { return rate_limiter_service_1.RateLimiterService; } }); // Controllers var task_controller_1 = require("./controllers/task.controller"); Object.defineProperty(exports, "TaskController", { enumerable: true, get: function () { return task_controller_1.TaskController; } }); // Decorators var processor_decorator_1 = require("./decorators/processor.decorator"); Object.defineProperty(exports, "Processor", { enumerable: true, get: function () { return processor_decorator_1.Processor; } }); var process_decorator_1 = require("./decorators/process.decorator"); Object.defineProperty(exports, "Process", { enumerable: true, get: function () { return process_decorator_1.Process; } }); var events_decorator_1 = require("./decorators/events.decorator"); Object.defineProperty(exports, "OnTaskActive", { enumerable: true, get: function () { return events_decorator_1.OnTaskActive; } }); Object.defineProperty(exports, "OnTaskCompleted", { enumerable: true, get: function () { return events_decorator_1.OnTaskCompleted; } }); Object.defineProperty(exports, "OnTaskFailed", { enumerable: true, get: function () { return events_decorator_1.OnTaskFailed; } }); Object.defineProperty(exports, "OnTaskProgress", { enumerable: true, get: function () { return events_decorator_1.OnTaskProgress; } }); var cloud_task_consumer_decorator_1 = require("./decorators/cloud-task-consumer.decorator"); Object.defineProperty(exports, "CloudTaskConsumer", { enumerable: true, get: function () { return cloud_task_consumer_decorator_1.CloudTaskConsumer; } }); // Models var cloud_task_model_1 = require("./models/cloud-task.model"); Object.defineProperty(exports, "CloudTask", { enumerable: true, get: function () { return cloud_task_model_1.CloudTask; } }); // Storage Adapters var memory_storage_adapter_1 = require("./adapters/memory-storage.adapter"); Object.defineProperty(exports, "MemoryStorageAdapter", { enumerable: true, get: function () { return memory_storage_adapter_1.MemoryStorageAdapter; } }); var redis_storage_adapter_1 = require("./adapters/redis-storage.adapter"); Object.defineProperty(exports, "RedisStorageAdapter", { enumerable: true, get: function () { return redis_storage_adapter_1.RedisStorageAdapter; } }); var mongo_storage_adapter_1 = require("./adapters/mongo-storage.adapter"); Object.defineProperty(exports, "MongoStorageAdapter", { enumerable: true, get: function () { return mongo_storage_adapter_1.MongoStorageAdapter; } }); // Utilities __exportStar(require("./utils/metadata.utils"), exports); __exportStar(require("./utils/http.utils"), exports); const cloud_taskmq_2 = require("./cloud-taskmq"); // Constants exports.TASK_STATUSES = { IDLE: 'idle', ACTIVE: 'active', COMPLETED: 'completed', FAILED: 'failed', DELAYED: 'delayed', CANCELLED: 'cancelled', }; /** * Create a CloudTaskMQ instance with default configuration */ function createCloudTaskMQ(config = {}) { const defaultConfig = { projectId: process.env.GOOGLE_CLOUD_PROJECT || '', location: process.env.GOOGLE_CLOUD_LOCATION || 'us-central1', storageAdapter: 'memory', queues: config.queues || [{ name: 'default', path: `projects/${process.env.GOOGLE_CLOUD_PROJECT || 'demo-project'}/locations/${process.env.GOOGLE_CLOUD_LOCATION || 'us-central1'}/queues/default`, rateLimiter: { maxRequests: 100, windowMs: 60000, // 1 minute }, }], ...config, }; return new cloud_taskmq_2.CloudTaskMQ(defaultConfig); } /** * Create and initialize a CloudTaskMQ instance */ async function createAndInitializeCloudTaskMQ(config = {}) { const instance = createCloudTaskMQ(config); await instance.initialize(); return instance; } // Re-export reflect-metadata for convenience require("reflect-metadata");