UNPKG

@event-inc/pipelines

Version:

Event Inc is a fully managed event bus lets you send and receive data across mission-critical cloud apps, databases and warehouses.

70 lines 4.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getConfig = exports.getMiddleware = exports.getExtractors = exports.getTransformers = void 0; const utils_1 = require("@event-inc/utils"); const getTransformers = (transformation) => { return { _type: 'transformer', language: transformation.type, code: String(transformation.func), }; }; exports.getTransformers = getTransformers; const hasDuplicate = (arr) => { const values = arr.map((extractor) => extractor.label); return new Set(values).size !== values.length; }; const getExtractors = (extractors) => { var _a; if ((extractors === null || extractors === void 0 ? void 0 : extractors.length) > 0 && hasDuplicate(extractors)) { (0, utils_1.handleBuildableError)((0, utils_1.BError)(false, 'extractor_4000', 'Extractors cannot have duplicate labels', 'client-middleware', false)); } return ((_a = extractors === null || extractors === void 0 ? void 0 : extractors.map((extractor) => { if (extractor.type === 'http') { if (!(0, utils_1.isValidUrl)(extractor.config.url)) { (0, utils_1.handleBuildableError)((0, utils_1.BError)(false, 'extractor_4000', 'Extractor url is invalid', 'client-middleware', false)); } if (!(0, utils_1.isAlphanumericUnderscore)(extractor.label)) { (0, utils_1.handleBuildableError)((0, utils_1.BError)(false, 'extractor_4000', 'The label for the extractor can only contain alphanumeric characters and underscores', 'client-middleware', false)); } return Object.assign({ key: extractor.label, _type: 'extractor::http', url: extractor.config.url, headers: extractor.config.headers ? JSON.stringify(extractor.config.headers) : '{}', method: extractor.config.method, data: extractor.config.data ? JSON.stringify(extractor.config.data) : '{}' }, (0, exports.getConfig)(extractor.settings)); } })) !== null && _a !== void 0 ? _a : []); }; exports.getExtractors = getExtractors; const getMiddleware = (extractors, transformation, middleware) => { let finalMiddleware = middleware ? [...middleware] : []; if (extractors) { const extractorList = (0, exports.getExtractors)(extractors); const middlewareWithoutExtractors = finalMiddleware === null || finalMiddleware === void 0 ? void 0 : finalMiddleware.filter((middleware) => middleware._type !== 'extractor::http'); finalMiddleware = [...middlewareWithoutExtractors, ...extractorList]; } if (transformation) { const middlewareWithoutTransformation = finalMiddleware === null || finalMiddleware === void 0 ? void 0 : finalMiddleware.filter((middleware) => middleware._type !== 'transformer'); finalMiddleware = [ ...middlewareWithoutTransformation, (0, exports.getTransformers)(transformation), ]; } return finalMiddleware; }; exports.getMiddleware = getMiddleware; const getConfig = (settings, pipeline) => { var _a, _b, _c, _d, _e; const config = { startToCloseTimeout: (settings === null || settings === void 0 ? void 0 : settings.startToCloseTimeout) || ((_a = pipeline === null || pipeline === void 0 ? void 0 : pipeline.config) === null || _a === void 0 ? void 0 : _a.startToCloseTimeout) || '1 minute', policies: { retry: { maximumAttempts: ((_b = settings === null || settings === void 0 ? void 0 : settings.retry) === null || _b === void 0 ? void 0 : _b.maximumAttempts) || ((_e = (_d = (_c = pipeline === null || pipeline === void 0 ? void 0 : pipeline.config) === null || _c === void 0 ? void 0 : _c.policies) === null || _d === void 0 ? void 0 : _d.retry) === null || _e === void 0 ? void 0 : _e.maximumAttempts) || 1, initialInterval: '1 second', }, }, }; return config; }; exports.getConfig = getConfig; //# sourceMappingURL=utilities.js.map