UNPKG

dt-common-device

Version:

A secure and robust device management library for IoT applications

132 lines (131 loc) 6.39 kB
"use strict"; var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context = {}; for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; for (var p in contextIn.access) context.access[p] = contextIn.access[p]; context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_ = accept(result.get)) descriptor.get = _; if (_ = accept(result.set)) descriptor.set = _; if (_ = accept(result.init)) initializers.unshift(_); } else if (_ = accept(result)) { if (kind === "field") initializers.unshift(_); else descriptor[key] = _; } } if (target) Object.defineProperty(target, contextIn.name, descriptor); done = true; }; var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) { var useValue = arguments.length > 2; for (var i = 0; i < initializers.length; i++) { value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); } return useValue ? value : void 0; }; var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) { if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebhookQueueFactory = void 0; const typedi_1 = require("typedi"); const WebhookQueueService_1 = require("./WebhookQueueService"); let WebhookQueueFactory = (() => { let _classDecorators = [(0, typedi_1.Service)()]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; var WebhookQueueFactory = _classThis = class { /** * Create or get a webhook queue service instance * @param config Configuration for the webhook queue * @param instanceKey Optional key to identify different instances * @returns WebhookQueueService instance */ static createWebhookQueue(config, instanceKey = "default") { const key = `${config.redisHost}:${config.redisPort}:${instanceKey}`; if (!this.instances.has(key)) { const instance = new WebhookQueueService_1.WebhookQueueService(config); this.instances.set(key, instance); } return this.instances.get(key); } /** * Get an existing webhook queue service instance * @param instanceKey Key to identify the instance * @returns WebhookQueueService instance or null if not found */ static getWebhookQueue(instanceKey = "default") { for (const [key, instance] of this.instances) { if (key.includes(instanceKey)) { return instance; } } return null; } /** * Get all webhook queue service instances * @returns Array of all WebhookQueueService instances */ static getAllWebhookQueues() { return Array.from(this.instances.values()); } /** * Shutdown all webhook queue service instances */ static async shutdownAll() { const shutdownPromises = Array.from(this.instances.values()).map((instance) => instance.shutdown()); await Promise.all(shutdownPromises); this.instances.clear(); } /** * Check if a webhook queue service instance exists * @param instanceKey Key to identify the instance * @returns True if instance exists, false otherwise */ static hasWebhookQueue(instanceKey = "default") { return this.getWebhookQueue(instanceKey) !== null; } /** * Remove a webhook queue service instance * @param instanceKey Key to identify the instance */ static async removeWebhookQueue(instanceKey = "default") { const instance = this.getWebhookQueue(instanceKey); if (instance) { await instance.shutdown(); // Remove from instances map for (const [key, inst] of this.instances) { if (key.includes(instanceKey)) { this.instances.delete(key); break; } } } } }; __setFunctionName(_classThis, "WebhookQueueFactory"); (() => { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); WebhookQueueFactory = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); })(); _classThis.instances = new Map(); (() => { __runInitializers(_classThis, _classExtraInitializers); })(); return WebhookQueueFactory = _classThis; })(); exports.WebhookQueueFactory = WebhookQueueFactory;