UNPKG

@stryker-mutator/core

Version:

The extendable JavaScript mutation testing framework

34 lines (29 loc) 1.16 kB
import { commonTokens, tokens } from '@stryker-mutator/api/plugin'; import type { JSONSchema7 } from 'json-schema'; import { Logger } from '@stryker-mutator/api/logging'; import { coreTokens } from '../di/index.js'; export class MetaSchemaBuilder { public static inject = tokens(coreTokens.validationSchema, commonTokens.logger); constructor( private readonly schema: JSONSchema7, private readonly log: Logger, ) {} public buildMetaSchema(pluginSchemaContributions: Array<Record<string, unknown>>): JSONSchema7 { this.log.debug('Contributing %s schemas from plugins to options validation.', pluginSchemaContributions.length); return mergedSchema(this.schema, pluginSchemaContributions); } } function mergedSchema(mainSchema: JSONSchema7, additionalSchemas: JSONSchema7[]): JSONSchema7 { const schema = { ...mainSchema, properties: { ...mainSchema.properties, }, definitions: { ...mainSchema.definitions, }, }; Object.assign(schema.properties, ...additionalSchemas.map((s) => s.properties)); Object.assign(schema.definitions, ...additionalSchemas.map((s) => s.definitions)); return schema; }