UNPKG

@message-in-the-middle/core

Version:

Framework-agnostic middleware pattern for message queue processing. Core package with all middlewares.

220 lines 10.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDevelopmentPipeline = createDevelopmentPipeline; exports.createStandardPipeline = createStandardPipeline; exports.createProductionPipeline = createProductionPipeline; exports.createHighThroughputPipeline = createHighThroughputPipeline; exports.createCompliancePipeline = createCompliancePipeline; exports.createResilientPipeline = createResilientPipeline; exports.createObservablePipeline = createObservablePipeline; const manager_1 = require("./manager"); const dispatcher_1 = require("./dispatcher"); const json_middleware_1 = require("./middlewares/json.middleware"); const logging_middleware_1 = require("./middlewares/logging.middleware"); const validation_middleware_1 = require("./middlewares/validation.middleware"); const retry_middleware_1 = require("./middlewares/retry.middleware"); const deduplication_middleware_1 = require("./middlewares/deduplication.middleware"); const dead_letter_middleware_1 = require("./middlewares/dead-letter.middleware"); const metrics_middleware_1 = require("./middlewares/metrics.middleware"); const tracing_middleware_1 = require("./middlewares/tracing.middleware"); const validators_1 = require("./validators"); function createValidatorFromOptions(options) { if (options.validator) { return new validation_middleware_1.ValidateInboundMiddleware(options.validator); } if (options.schema) { const schema = options.schema; if (schema._def && typeof schema.parseAsync === 'function') { return (0, validators_1.createZodValidator)(schema); } if (schema.isJoi || (schema.$__ && schema.$__.joi)) { return (0, validators_1.createJoiValidator)(schema); } if (schema.__isYupSchema__ || (schema.type && typeof schema.validate === 'function')) { return (0, validators_1.createYupValidator)(schema); } if (typeof schema === 'object' && schema.type && !schema._def && !schema.isJoi) { return (0, validators_1.createAjvValidator)(schema); } throw new Error('Unable to detect schema type. Supported: Zod, Joi, Yup, JSON Schema. ' + 'Or provide a validator function instead.'); } return null; } function createDevelopmentPipeline(options = {}) { const manager = new manager_1.MessageMiddlewareManager(); manager.addInboundMiddleware(new json_middleware_1.ParseJsonInboundMiddleware()); if (options.logging?.enabled !== false) { const logger = options.logging?.logger || console; manager.addInboundMiddleware(new logging_middleware_1.LogInboundMiddleware(logger)); } if (options.customMiddlewares) { options.customMiddlewares.forEach(middleware => { manager.addInboundMiddleware(middleware); }); } if (options.dispatcher) { manager.addInboundMiddleware(new dispatcher_1.DispatcherMiddleware(options.dispatcher)); } return manager; } function createStandardPipeline(options = {}) { const manager = new manager_1.MessageMiddlewareManager(); manager.addInboundMiddleware(new json_middleware_1.ParseJsonInboundMiddleware()); if (options.logging?.enabled !== false) { const logger = options.logging?.logger || console; manager.addInboundMiddleware(new logging_middleware_1.LogInboundMiddleware(logger)); } if (options.customMiddlewares) { options.customMiddlewares.forEach(middleware => { manager.addInboundMiddleware(middleware); }); } if (options.retry?.enabled !== false) { manager.addInboundMiddleware(new retry_middleware_1.RetryInboundMiddleware({ maxRetries: options.retry?.maxRetries ?? 3, delayMs: options.retry?.delayMs ?? 1000, backoffMultiplier: options.retry?.backoffMultiplier ?? 2 })); } if (options.dispatcher) { manager.addInboundMiddleware(new dispatcher_1.DispatcherMiddleware(options.dispatcher)); } return manager; } function createProductionPipeline(options = {}) { const manager = new manager_1.MessageMiddlewareManager(); manager.addInboundMiddleware(new json_middleware_1.ParseJsonInboundMiddleware()); if (options.logging?.enabled !== false) { const logger = options.logging?.logger || console; manager.addInboundMiddleware(new logging_middleware_1.LogInboundMiddleware(logger)); } if (options.deduplication?.enabled !== false && options.deduplication?.store) { manager.addInboundMiddleware(new deduplication_middleware_1.DeduplicateInboundMiddleware(options.deduplication.store)); } if (options.validation?.enabled !== false && options.validation) { const validator = createValidatorFromOptions(options.validation); if (validator) { manager.addInboundMiddleware(validator); } } if (options.retry?.enabled !== false) { manager.addInboundMiddleware(new retry_middleware_1.RetryInboundMiddleware({ maxRetries: options.retry?.maxRetries ?? 3, delayMs: options.retry?.delayMs ?? 1000, backoffMultiplier: options.retry?.backoffMultiplier ?? 2 })); } if (options.customMiddlewares) { options.customMiddlewares.forEach(middleware => { manager.addInboundMiddleware(middleware); }); } if (options.dispatcher) { manager.addInboundMiddleware(new dispatcher_1.DispatcherMiddleware(options.dispatcher)); } return manager; } function createHighThroughputPipeline(options = {}) { return createDevelopmentPipeline({ ...options, logging: options.logging ?? { enabled: false } }); } function createCompliancePipeline(options = {}) { const manager = new manager_1.MessageMiddlewareManager(); manager.addInboundMiddleware(new json_middleware_1.ParseJsonInboundMiddleware()); const logger = options.logging?.logger || console; manager.addInboundMiddleware(new logging_middleware_1.LogInboundMiddleware(logger)); if (options.validation?.enabled !== false && options.validation?.validator) { manager.addInboundMiddleware(new validation_middleware_1.ValidateInboundMiddleware(options.validation.validator)); } if (options.retry?.enabled !== false) { manager.addInboundMiddleware(new retry_middleware_1.RetryInboundMiddleware({ maxRetries: options.retry?.maxRetries ?? 5, delayMs: options.retry?.delayMs ?? 1000, backoffMultiplier: options.retry?.backoffMultiplier ?? 2 })); } if (options.customMiddlewares) { options.customMiddlewares.forEach(middleware => { manager.addInboundMiddleware(middleware); }); } if (options.dispatcher) { manager.addInboundMiddleware(new dispatcher_1.DispatcherMiddleware(options.dispatcher)); } return manager; } function createResilientPipeline(options = {}) { const manager = new manager_1.MessageMiddlewareManager(); manager.addInboundMiddleware(new json_middleware_1.ParseJsonInboundMiddleware()); const logger = options.logging?.logger || console; manager.addInboundMiddleware(new logging_middleware_1.LogInboundMiddleware(logger)); if (options.deduplication?.enabled !== false && options.deduplication?.store) { manager.addInboundMiddleware(new deduplication_middleware_1.DeduplicateInboundMiddleware(options.deduplication.store)); } if (options.validation?.enabled !== false && options.validation) { const validator = createValidatorFromOptions(options.validation); if (validator) { manager.addInboundMiddleware(validator); } } if (options.retry?.enabled !== false) { manager.addInboundMiddleware(new retry_middleware_1.RetryInboundMiddleware({ maxRetries: options.retry?.maxRetries ?? 5, delayMs: options.retry?.delayMs ?? 1000, backoffMultiplier: options.retry?.backoffMultiplier ?? 2 })); } if (options.deadLetter) { manager.addInboundMiddleware(new dead_letter_middleware_1.DeadLetterInboundMiddleware(options.deadLetter)); } if (options.customMiddlewares) { options.customMiddlewares.forEach(middleware => { manager.addInboundMiddleware(middleware); }); } if (options.dispatcher) { manager.addInboundMiddleware(new dispatcher_1.DispatcherMiddleware(options.dispatcher)); } return manager; } function createObservablePipeline(options = {}) { const manager = new manager_1.MessageMiddlewareManager(); manager.addInboundMiddleware(new json_middleware_1.ParseJsonInboundMiddleware()); const logger = options.logging?.logger || console; manager.addInboundMiddleware(new logging_middleware_1.LogInboundMiddleware(logger)); if (options.metrics?.enabled !== false && options.metrics?.collector) { manager.addInboundMiddleware(new metrics_middleware_1.MetricsInboundMiddleware(options.metrics.collector)); } if (options.tracing?.enabled !== false && options.tracing?.tracer) { manager.addInboundMiddleware(new tracing_middleware_1.TracingInboundMiddleware(options.tracing.tracer)); } if (options.deduplication?.enabled !== false && options.deduplication?.store) { manager.addInboundMiddleware(new deduplication_middleware_1.DeduplicateInboundMiddleware(options.deduplication.store)); } if (options.validation?.enabled !== false && options.validation) { const validator = createValidatorFromOptions(options.validation); if (validator) { manager.addInboundMiddleware(validator); } } if (options.retry?.enabled !== false) { manager.addInboundMiddleware(new retry_middleware_1.RetryInboundMiddleware({ maxRetries: options.retry?.maxRetries ?? 3, delayMs: options.retry?.delayMs ?? 1000, backoffMultiplier: options.retry?.backoffMultiplier ?? 2 })); } if (options.customMiddlewares) { options.customMiddlewares.forEach(middleware => { manager.addInboundMiddleware(middleware); }); } if (options.dispatcher) { manager.addInboundMiddleware(new dispatcher_1.DispatcherMiddleware(options.dispatcher)); } return manager; } //# sourceMappingURL=presets.js.map