UNPKG

bananareporter

Version:

Easily generate a report from multiple sources

48 lines (47 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadAndValidateConfig = exports.BananaConfig = exports.BananaOutputFileFormat = void 0; const dayjs = require("dayjs"); const zod_1 = require("zod"); const base_1 = require("../integrations/base"); const common_1 = require("../util/common"); const logger_1 = require("../util/logger"); exports.BananaOutputFileFormat = zod_1.z.enum(['json', 'jsonl', 'csv']); exports.BananaConfig = zod_1.z.object({ includeRawObject: zod_1.z.boolean().default(false), format: exports.BananaOutputFileFormat, out: zod_1.z.string().min(1), /** * ISO8601 date range for all the sources, * can be overridden per source */ from: common_1.zIsoString, to: common_1.zIsoString, /** * banana reporter configuration file path */ configFileLocation: zod_1.z.string().min(1), /** * delay in seconds between every HTTP requests (sources) */ delay: zod_1.z.number().min(0).max(5000).default(300), /** * where to fetch data */ sources: zod_1.z.array(zod_1.z.object({ type: base_1.SourceType, }).passthrough()).nonempty(), }).refine(schema => { const dateFrom = dayjs(schema.from); const dateTo = dayjs(schema.to); return dateFrom.isSame(dateTo) || dateFrom.isBefore(dateTo); }, "'from' date must be before 'to' date") .refine(schema => { return !(schema.includeRawObject && (schema.format !== exports.BananaOutputFileFormat.Enum.json && schema.format !== exports.BananaOutputFileFormat.Enum.jsonl)); }, "'include-raw-object' can only be used with json or jsonl format"); function loadAndValidateConfig(input) { logger_1.logger.debug('loadAndValidateConfig input', input); const validated = exports.BananaConfig.parse(input); return validated; } exports.loadAndValidateConfig = loadAndValidateConfig;