- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8 - Actualizaciones de configuracion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
137 lines
5.8 KiB
JavaScript
137 lines
5.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.createQueueOptionProviders = createQueueOptionProviders;
|
|
exports.createFlowProducerOptionProviders = createFlowProducerOptionProviders;
|
|
exports.createQueueProviders = createQueueProviders;
|
|
exports.createFlowProducerProviders = createFlowProducerProviders;
|
|
const bull_shared_1 = require("@nestjs/bull-shared");
|
|
const common_1 = require("@nestjs/common");
|
|
const utils_1 = require("./utils");
|
|
const helpers_1 = require("./utils/helpers");
|
|
function createQueueAndWorkers(options, queueClass, workerClass) {
|
|
const queueName = options.name ?? 'default';
|
|
const queue = new queueClass(queueName, options);
|
|
let workerRefs = [];
|
|
if (options.processors) {
|
|
workerRefs = options.processors.map((processor) => {
|
|
if ((0, helpers_1.isAdvancedProcessor)(processor)) {
|
|
const { callback, ...processorOptions } = processor;
|
|
return new workerClass(queueName, callback, {
|
|
connection: options.connection,
|
|
sharedConnection: options.sharedConnection,
|
|
prefix: options.prefix,
|
|
...processorOptions,
|
|
});
|
|
}
|
|
else if ((0, helpers_1.isAdvancedSeparateProcessor)(processor)) {
|
|
const { path, ...processorOptions } = processor;
|
|
return new workerClass(queueName, path, {
|
|
connection: options.connection,
|
|
sharedConnection: options.sharedConnection,
|
|
prefix: options.prefix,
|
|
...processorOptions,
|
|
});
|
|
}
|
|
else if ((0, helpers_1.isSeparateProcessor)(processor)) {
|
|
return new workerClass(queueName, processor, {
|
|
connection: options.connection,
|
|
sharedConnection: options.sharedConnection,
|
|
prefix: options.prefix,
|
|
});
|
|
}
|
|
else if ((0, helpers_1.isProcessorCallback)(processor)) {
|
|
return new workerClass(queueName, processor, {
|
|
connection: options.connection,
|
|
sharedConnection: options.sharedConnection,
|
|
prefix: options.prefix,
|
|
});
|
|
}
|
|
});
|
|
}
|
|
queue.onApplicationShutdown =
|
|
async function () {
|
|
const closeWorkers = workerRefs.map((worker) => worker.close());
|
|
await Promise.all(closeWorkers);
|
|
await this.close();
|
|
if (options.forceDisconnectOnShutdown) {
|
|
if (this.connection?.status !== 'closed' && this.disconnect) {
|
|
return this.disconnect();
|
|
}
|
|
}
|
|
};
|
|
return queue;
|
|
}
|
|
function createFlowProducers(options, flowProducerClass) {
|
|
const flowProducer = new flowProducerClass(options);
|
|
flowProducer.onApplicationShutdown =
|
|
async function () {
|
|
await this.close();
|
|
if (options.forceDisconnectOnShutdown ?? true) {
|
|
if (this.connection?.status !== 'closed' && this.disconnect) {
|
|
return this.disconnect();
|
|
}
|
|
}
|
|
};
|
|
return flowProducer;
|
|
}
|
|
function createQueueOptionProviders(options) {
|
|
const providers = options.map((option) => {
|
|
const optionalSharedConfigHolder = (0, bull_shared_1.createConditionalDepHolder)((0, utils_1.getSharedConfigToken)(option.configKey), utils_1.BULL_CONFIG_DEFAULT_TOKEN);
|
|
return [
|
|
optionalSharedConfigHolder,
|
|
{
|
|
provide: (0, utils_1.getQueueOptionsToken)(option.name),
|
|
useFactory: (optionalDepHolder) => {
|
|
return {
|
|
...optionalDepHolder.getDependencyRef(option.name),
|
|
...option,
|
|
};
|
|
},
|
|
inject: [optionalSharedConfigHolder],
|
|
},
|
|
];
|
|
});
|
|
return (0, common_1.flatten)(providers);
|
|
}
|
|
function createFlowProducerOptionProviders(options) {
|
|
const providers = options.map((option) => {
|
|
const optionalSharedConfigHolder = (0, bull_shared_1.createConditionalDepHolder)((0, utils_1.getSharedConfigToken)(option.configKey), utils_1.BULL_CONFIG_DEFAULT_TOKEN);
|
|
return [
|
|
optionalSharedConfigHolder,
|
|
{
|
|
provide: (0, utils_1.getFlowProducerOptionsToken)(option.name),
|
|
useFactory: (optionalDepHolder) => {
|
|
return {
|
|
...optionalDepHolder.getDependencyRef(option.name),
|
|
...option,
|
|
};
|
|
},
|
|
inject: [optionalSharedConfigHolder],
|
|
},
|
|
];
|
|
});
|
|
return (0, common_1.flatten)(providers);
|
|
}
|
|
function createQueueProviders(options, queueClass, workerClass) {
|
|
const queueProviders = options.map((item) => ({
|
|
provide: (0, bull_shared_1.getQueueToken)(item.name),
|
|
useFactory: (queueOptions) => {
|
|
const queueName = queueOptions.name || item.name;
|
|
return createQueueAndWorkers({ ...queueOptions, name: queueName }, queueClass, workerClass);
|
|
},
|
|
inject: [(0, utils_1.getQueueOptionsToken)(item.name)],
|
|
}));
|
|
return queueProviders;
|
|
}
|
|
function createFlowProducerProviders(options, flowProducerClass) {
|
|
const flowProducerProviders = options.map((item) => ({
|
|
provide: (0, utils_1.getFlowProducerToken)(item.name),
|
|
useFactory: (flowProducerOptions) => {
|
|
const flowProducerName = flowProducerOptions.name || item.name;
|
|
return createFlowProducers({ ...flowProducerOptions, name: flowProducerName }, flowProducerClass);
|
|
},
|
|
inject: [(0, utils_1.getFlowProducerOptionsToken)(item.name)],
|
|
}));
|
|
return flowProducerProviders;
|
|
}
|