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
JavaScript
;
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");