UNPKG

@v4fire/core

Version:
78 lines (61 loc) 1.96 kB
/*! * V4Fire Core * https://github.com/V4Fire/Core * * Released under the MIT license * https://github.com/V4Fire/Core/blob/master/LICENSE */ import { DEFAULT_LEVEL } from 'core/log/base'; import { LogPipeline } from 'core/log/curator/pipeline'; import type { LogPipelineConfig } from 'core/log/config/interface'; import middlewareFactory, { LogMiddleware } from 'core/log/middlewares'; import engineFactory from 'core/log/engines'; /** * Creates a pipeline by using the config * (returns undefined if there are not enough data to create one) * * @param pipelineConfig */ export function createPipeline(pipelineConfig: LogPipelineConfig): CanUndef<LogPipeline> { //#if runtime has core/log const { middlewares, engine, engineOptions, minLevel } = pipelineConfig; const middlewareInstances: LogMiddleware[] = []; if (middlewares) { for (let i = 0; i < middlewares.length; ++i) { const nameOrTuple = middlewares[i]; if (Object.isString(nameOrTuple)) { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (middlewareFactory[nameOrTuple] == null) { console.error(`Can't find the middleware "${nameOrTuple}"`); continue; } middlewareInstances.push(middlewareFactory[nameOrTuple]()); } else { const [name, params] = nameOrTuple; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (middlewareFactory[name] == null) { console.error(`Can't find the middleware "${name}"`); continue; } middlewareInstances.push(middlewareFactory[name](...params)); } } } // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (engineFactory[engine] == null) { console.error(`Can't find the engine "${engine}"`); return; } const engineInstance = engineFactory[engine](engineOptions); return new LogPipeline(engineInstance, middlewareInstances, minLevel ?? DEFAULT_LEVEL); //#endif }